Codeforces 131D Subway(找图上唯一环)
2013-10-17 00:27
393 查看
给定一个n个点n条边存在唯一环的联通图,求每个点到环的距离。
找唯一环的话,用类似拓扑排序的方法,由于环上点的度>=2,所以bfs后未能遍历的点必在环上,然后就用dfs跟新距离就行了。
找唯一环的话,用类似拓扑排序的方法,由于环上点的度>=2,所以bfs后未能遍历的点必在环上,然后就用dfs跟新距离就行了。
#include<algorithm> #include<iostream> #include<cstring> #include<fstream> #include<sstream> #include<cstdlib> #include<vector> #include<string> #include<cstdio> #include<bitset> #include<queue> #include<stack> #include<cmath> #include<map> #include<set> #define FF(i, a, b) for(int i=a; i<b; i++) #define FD(i, a, b) for(int i=a; i>=b; i--) #define REP(i, n) for(int i=0; i<n; i++) #define CLR(a, b) memset(a, b, sizeof(a)) #define debug puts("**debug**") #define LL long long #define PB push_back #define MP make_pair using namespace std; const int maxn = 3010; int n, u, v, dist[maxn], degree[maxn]; bool vis[maxn]; vector<int> G[maxn]; void bfs() { queue<int> q; FF(i, 1, n+1) if(degree[i] == 1) q.push(i); while(!q.empty()) { int x = q.front(); q.pop(); vis[x] = 1; REP(i, G[x].size()) { int v = G[x][i]; if(!vis[v]) { degree[v]--; if(degree[v] < 2) q.push(v); } } } } void dfs(int u, int fa) { REP(i, G[u].size()) { int v = G[u][i]; if(v != fa && vis[v]) { dist[v] = dist[u] + 1; dfs(v, u); } } } int main() { scanf("%d", &n); FF(i, 1, n+1) { scanf("%d%d", &u, &v); G[u].PB(v); G[v].PB(u); degree[u]++; degree[v]++; } bfs(); FF(i, 1, n+1) if(!vis[i]) dfs(i, -1); FF(i, 1, n+1) printf("%d ", dist[i]); return 0; }
相关文章推荐
- Codeforces 131D. Subway 寻找环-树的最短路径
- Codeforces 131D. Subway 寻找环-树的最短路径
- CodeForces 131D Subway [tarjan+最短路]
- Codeforces 131D - Subway
- codeforces 884C Bertown Subway
- CodeForces 844A Diversity (超级超级水唯一需要想得就是开个标记数组吧)
- CodeForces 131D【图特性+BFS】
- CodeForces 25A IQ test 唯一奇偶
- CodeForces 371 E.Subway Innovation(贪心)
- Codeforces 151C Win or Freeze 简单博弈+唯一分解
- Bertown Subway CodeForces - 884C
- CodeForces 25A IQ test 唯一奇偶(简单的题目)
- CodeForces 315E - Sereja and Subsequences 阅读理解+树状数组
- Codeforces-509-A(c++)
- CodeForces 540A Combination Lock
- CodeForces 525D Arthur and Walls
- Codeforces 737D
- CodeForces - 747D
- 【codeforces 761C】Dasha and Password(贪心+枚举做法)
- 【Codeforces 163E】E-Government