You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
1.3 KiB

2 years ago
#include <bits/stdc++.h>
using namespace std;
const int N = 1010; //图的最大点数量
struct Edge { //记录边的终点,边权的结构体
int to; //终点
int value; //边权
};
int n, m; //表示图中有n个点m条边
vector<Edge> p[N]; //使用vector的邻接表
/**
12
15
5 4
1 2
2 3
3 4
1 4
2
5 4
1 2
2 3
3 4
1 5
*/
bool st[N];
int cnt;
int main() {
//采用邻接表建图
cin >> n >> m;
//m条边
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
p[u].push_back({v, 1});//因本题不需要权值默认权值为1
}
//利用bfs进行检查是不是强连通的
//把1号结点放入队列
queue<int> q;
q.push(1);
while (!q.empty()) {
int u = q.front();
q.pop();
st[u] = true;
cnt++;
for (int i = 0; i < p[u].size(); i++) {
int x = p[u][i].to;
if (!st[x]) q.push(x);
}
}
if (cnt == n) printf("图是连通的\n");
else printf("图不是连通的\n");
return 0;
}