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.

61 lines
1.2 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;
//深度遍历
void dfs(int u) {
st[u] = true;
cnt++;//多走了一个结点
for (int i = 0; i < p[u].size(); i++) {
int x = p[u][i].to;
if (!st[x]) dfs(x);
}
}
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
}
//利用dfs进行检查是不是强连通的
dfs(1);
if (cnt == n) printf("图是连通的\n");
else printf("图不是连通的\n");
return 0;
}