POJ-3895(vector数组+dfs)

来源:互联网 发布:人工智能的应用新闻 编辑:程序博客网 时间:2024/05/21 19:23

【题目描述】

求一个图中最大环的点个数

vector<int> g[4445];int visited[4445];int num[4445];int ans;void dfs(int v, int t){num[v] = t;visited[v] = 1;int l = g[v].size(), i;for (i = 0; i < l; ++i) {if (visited[g[v][i]]) {ans = MY_MAX(ans, num[v] - num[g[v][i]] + 1);} else {dfs(g[v][i], t + 1);}}}int main (){int t;scanf("%d", &t);while (t--) {ans = 0;memset(visited, 0, sizeof(visited));memset(num, 0, sizeof(num));int a, b, i, j, x, y;scanf("%d%d", &a, &b);for (i = 1; i <= a; ++i) g[i].clear();for (i = 0; i < b; ++i) {scanf("%d%d", &x, &y);g[x].push_back(y);g[y].push_back(x);}for (i = 1; i <= a; ++i) {if (visited[i] == 0) {dfs(i, 1);}}if (ans > 2) printf("%d\n", ans);else printf("0\n");}    return 0;}


原创粉丝点击