• Rainbow Roads


    Rainbow Roads

    题意:给一棵n个结点的树,每条边都有一种颜色,要求找出所有的good点,good点定义:从这个点出发,到其他任意结点的简单路径(最短路径),相邻的两条边颜色都不同。

     题解看这里:here

    不过我想了一下(vis)设成2就可以了

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef long long ll;
     4 #define endl '
    '
     5 const int maxn = 5e5+10;
     6 
     7 struct node{
     8     int to,nxt,col;
     9 }e[maxn<<1];
    10 
    11 int n,head[maxn],tot,c[maxn],vis[maxn];
    12 int ans[maxn],cnt;
    13 
    14 void init(){
    15     memset(head,-1,sizeof(head));
    16     tot=0;
    17 }
    18 
    19 void addedge(int u,int v,int w){
    20     e[tot].to=v; e[tot].nxt=head[u]; e[tot].col=w; head[u]=tot++;
    21     e[tot].to=u; e[tot].nxt=head[v]; e[tot].col=w; head[v]=tot++;
    22 }
    23 
    24 void dfs(int fa,int now){
    25     if( vis[now]>2 ) return ;
    26     vis[now]++;
    27     for(int i=head[now];~i;i=e[i].nxt){
    28         if( e[i].to!=fa )
    29             dfs(now,e[i].to);
    30     }
    31 }
    32 
    33 int main()
    34 {
    35     init();
    36     scanf("%d",&n);
    37     for(int i=1;i<n;i++){
    38         int a,b,c;
    39         scanf("%d%d%d",&a,&b,&c);
    40         addedge(a,b,c);
    41     }
    42 
    43     for(int i=1;i<=n;i++){
    44         for(int j=head[i];~j;j=e[j].nxt){
    45             c[e[j].col]++;
    46         }
    47         for(int j=head[i];~j;j=e[j].nxt){
    48             if( c[e[j].col]>1 ){
    49                 dfs(i,e[j].to);
    50             }
    51         }
    52         for(int j=head[i];~j;j=e[j].nxt){
    53             c[e[j].col]--;
    54         }
    55     }
    56 
    57     for(int i=1;i<=n;i++){
    58         if( !vis[i] ) ans[++cnt]=i;
    59     }
    60     printf("%d
    ",cnt);
    61     for(int i=1;i<=cnt;i++){
    62         printf("%d
    ",ans[i]);
    63     }
    64 
    65     return 0;
    66 }
  • 相关阅读:
    Google Accounts,OpenID,OAuth
    Namespaces(命名空间)
    <Araxis Merge>Windows平台下的Merge概览
    <Araxis Merge>快速一览文件的比较与合并
    <Araxis Merge>保存文件
    <Stackoverflow> 声望和节制
    <Stackoverflow> 如何提问
    收集一些好用的搜索引擎
    一个简单的scrapy爬虫抓取豆瓣刘亦菲的图片地址
    应用python编写简单新浪微博应用(一)
  • 原文地址:https://www.cnblogs.com/wsy107316/p/13436975.html
Copyright © 2020-2023  润新知