Firstadjvex(g,v)算法c++代码
时间: 2024-01-03 11:05:51 浏览: 38
以下是使用邻接表实现的Firstadjvex(g, v)算法的C++代码:
```
#include <iostream>
#include <vector>
using namespace std;
const int MAXN = 100; // 最大顶点数
const int INF = 0x3f3f3f3f; // 无穷大
struct Edge {
int to; // 边的终点
int weight; // 边的权重
Edge(int t, int w) : to(t), weight(w) {}
};
vector<Edge> adj[MAXN]; // 邻接表
int Firstadjvex(int v) {
if (adj[v].empty()) { // 如果该顶点没有邻接点
return -1; // 返回-1
} else {
return adj[v][0].to; // 返回第一个邻接点的编号
}
}
int main() {
int n, m; // n为顶点数,m为边数
cin >> n >> m;
for (int i = 0; i < m; ++i) {
int u, v, w; // u和v之间有一条权重为w的边
cin >> u >> v >> w;
adj[u].push_back(Edge(v, w));
}
int v; // 求v的第一个邻接点
cin >> v;
int ans = Firstadjvex(v);
if (ans == -1) {
cout << "没有邻接点" << endl;
} else {
cout << "第一个邻接点为:" << ans << endl;
}
return 0;
}
```
该算法的时间复杂度为$O(1)$,因为只需要访问一个顶点的邻接表的第一个元素即可。