标签:
大意:找出一个城市的前面一个城市,因为才1000所以用dfs,最近正在学,感觉很经典,用了邻接矩阵和图的知识。
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int MAX = 1100; int n; int map[MAX][MAX],ans[MAX]; int dfs(int start){ for(int i = 1; i <= n ; i++){ if(map[start][i]&&!ans[i]){ ans[i] = start; dfs(i); } } } int main() { int T,s; scanf("%d",&T); while(T--){ memset(ans,0,sizeof(ans)); memset(map,0,sizeof(map)); scanf("%d%d",&n,&s); ans[s] = -1; int x, y; for(int i = 1; i < n ; i++){ scanf("%d%d",&x,&y); map[x][y] = 1; map[y][x] = 1; } dfs(s); for(int i = 1; i < n ; i++) printf("%d ",ans[i]); printf("%d\n",ans[n]); } return 0; }
标签:
原文地址:http://www.cnblogs.com/zero-begin/p/4344637.html