• NYOJ 20.吝啬的国度-DFS+STL(vector保存上一节点)


    整理代码

    吝啬的国度

    时间限制:1000 ms  |  内存限制:65535 KB
    难度:3
     
    描述
    在一个吝啬的国度里有N个城市,这N个城市间只有N-1条路把这个N个城市连接起来。现在,Tom在第S号城市,他有张该国地图,他想知道如果自己要去参观第T号城市,必须经过的前一个城市是几号城市(假设你不走重复的路)。
     
    输入
    第一行输入一个整数M表示测试数据共有M(1<=M<=5)组
    每组测试数据的第一行输入一个正整数N(1<=N<=100000)和一个正整数S(1<=S<=100000),N表示城市的总个数,S表示参观者所在城市的编号
    随后的N-1行,每行有两个正整数a,b(1<=a,b<=N),表示第a号城市和第b号城市之间有一条路连通。
    输出
    每组测试数据输N个正整数,其中,第i个数表示从S走到i号城市,必须要经过的上一个城市的编号。(其中i=S时,请输出-1)
    样例输入
    1
    10 1
    1 9
    1 8
    8 10
    10 3
    8 6
    1 2
    10 4
    9 5
    3 7
    
    样例输出
    -1 1 10 10 9 8 3 1 1 8
    
    代码:
     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<cmath>
     5 #include<algorithm>
     6 #include<queue>
     7 #include<vector>
     8 using namespace std;
     9 const int maxn=1e5+10;
    10 int a[maxn];
    11 vector<int>v[maxn];
    12 void DFS(int fa){
    13     for(int i=0;i<v[fa].size();i++){
    14         if(a[v[fa][i]])continue;
    15         a[v[fa][i]]=fa;
    16         DFS(v[fa][i]);
    17     }
    18 }
    19 int main(){
    20     int t;
    21     scanf("%d",&t);
    22     while(t--){
    23         memset(v,0,sizeof(v));
    24         memset(a,0,sizeof(a));
    25         int n,fa;
    26         scanf("%d%d",&n,&fa);
    27         a[fa]=-1;
    28         int x,y;
    29         for(int i=0;i<n-1;i++){
    30             scanf("%d%d",&x,&y);
    31             v[x].push_back(y);
    32             v[y].push_back(x);
    33         }
    34         DFS(fa);
    35         for(int i=1;i<n;i++)
    36             printf("%d ",a[i]);
    37         printf("%d
    ",a[n]);
    38     }
    39     return 0;
    40 }
  • 相关阅读:
    windows下安装mysql 开机启动
    android基础---->XMl数据的解析
    web基础---->session的使用
    android基础---->ListView的使用
    android基础---->WebView的使用
    android基础---->Toast的使用
    android基础---->SQLite数据库的使用
    android基础---->SharedPreferences的使用
    js数组的操作
    Javascript中的Array(数组) 、{}(映射) 与JSON解析
  • 原文地址:https://www.cnblogs.com/ZERO-/p/9135033.html
Copyright © 2020-2023  润新知