• nyoj 吝啬的国度 图的遍历


    题意:n个点,n-1条路,求出从点s出发到每一个点必须经过的前一个点,到自身为-1

    思路:从s出发遍历一遍图就可以了,开flag数组记录下来每一个点的必经的点。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstdlib>
     4 #include<cstring>
     5 #include<string>
     6 #include<queue>
     7 #include<algorithm>
     8 #include<map>
     9 #include<iomanip>
    10 #include<climits>
    11 #include<string.h>
    12 #include<cmath>
    13 #include<stdlib.h>
    14 #include<vector>
    15 #include<stack>
    16 #include<set>
    17 using namespace std;
    18 #define INF 1000000007
    19 #define MAXN 4010
    20 #define Mod 1000007
    21 #define N 100010
    22 #define NN 30
    23 #define sigma_size 3
    24 const int MAX = 1000100;
    25 const int maxn = 6e5 + 10;
    26 using namespace std;
    27 typedef long long LL;
    28 
    29 int T;
    30 int n, s;
    31 int u, v;
    32 vector<int> G[100010];
    33 int flag[100010];
    34 
    35 void dfs(int u)
    36 {
    37     for (int i = 0; i < G[u].size(); ++i) {
    38         int v = G[u][i];
    39         if (!flag[v]) {
    40             flag[v] = u;
    41             dfs(v);
    42         }
    43     }
    44 }
    45 
    46 void run()
    47 {
    48     cin >> n >> s;
    49     for (int i = 0; i <= n; ++i) {
    50         G[i].clear();
    51         flag[i] = 0;
    52     }
    53     for (int i = 1; i < n; ++i) {
    54         scanf("%d%d",&u,&v);
    55         G[u].push_back(v);
    56         G[v].push_back(u);
    57     }
    58     flag[s] = -1;
    59     dfs(s);
    60     printf("%d", flag[1]);
    61     for (int i = 2; i <= n; ++i) {
    62         printf(" %d", flag[i]);
    63     }
    64     puts("");
    65 }
    66 
    67 int main()
    68 {
    69     cin >> T;
    70     while (T--)
    71         run();
    72     //system("pause");
    73     return 0;
    74 }
  • 相关阅读:
    WPF通过不透明蒙板切割显示子控件
    WPF图片,DataGrid等实现圆角
    今天是2015年1月5日
    控制反转&依赖注入
    如何提高sql查询性能到达优化程序的目的
    handle句柄
    winform加快窗体加载速度
    winform窗体自适应大小
    快速整理代码(c#)
    IC卡、ID卡、M1卡、射频卡的区别是什么(射频卡是种通信技术)
  • 原文地址:https://www.cnblogs.com/usedrosee/p/4331289.html
Copyright © 2020-2023  润新知