zoukankan      html  css  js  c++  java
  • uva 12648

    一个简单的搜索;

    反正树的结构不会变,只需要把节点的名称换一下就行;

    可惜比赛的时候思路不清晰;

     1 #include<cstdio>
     2 #define maxn 5050
     3 #include<vector>
     4 #include<cstring>
     5 #include<algorithm>
     6 using namespace std;
     7 int age[maxn];
     8 int biao[maxn];
     9 bool vis[maxn];
    10 vector<int>ve[maxn],pa[maxn];
    11 char s[10];
    12 int ans;
    13 void dfs(int x,int v)
    14 {
    15     vis[x]=1;
    16     pa[v].push_back(x);
    17     int l=ve[x].size();
    18     for(int i=0;i<l;i++)
    19     {
    20         if(vis[ve[x][i]])continue;
    21         dfs(ve[x][i],v);
    22     }
    23 }
    24 
    25 int main()
    26 {
    27 //    freopen("data.in","r",stdin);
    28     int n,m,q,x,y;
    29     while(scanf("%d%d%d",&n,&m,&q)!=EOF)
    30     {
    31         for(int i=1;i<=n;i++){ve[i].clear(),pa[i].clear();}
    32         for(int i=0;i<=n;i++)biao[i]=i;
    33         for(int i=1;i<=n;i++)scanf("%d",&age[i]);
    34         for(int i=0;i<m;i++)
    35         {
    36             scanf("%d%d",&x,&y);
    37             ve[y].push_back(x);
    38         }
    39         for(int i=1;i<=n;i++)
    40         {
    41             memset(vis,0,sizeof vis);
    42             vis[i]=1;
    43             int l=ve[i].size();
    44             for(int j=0;j<l;j++)
    45                 if(!vis[ve[i][j]])dfs(ve[i][j],i);
    46         }
    47         for(int i=0;i<q;i++)
    48         {
    49             scanf("%s",s);
    50             if(s[0]=='T')
    51             {
    52                 scanf("%d%d",&x,&y);
    53                 swap(age[biao[x]],age[biao[y]]);
    54                 swap(biao[x],biao[y]);
    55             }
    56             else
    57             {
    58                 ans=999999;
    59                 scanf("%d",&x);
    60                 x=biao[x];
    61                 int l=pa[x].size();
    62                 for(int j=0;j<l;j++)ans=min(ans,age[pa[x][j]]);
    63                 if(ans==999999)puts("*");
    64                 else printf("%d
    ",ans);
    65             }
    66         }
    67     }
    68     return 0;
    69 }
    View Code
  • 相关阅读:
    Comparable VS Comparator
    Javascript中this关键字详解
    Runtime、System、Object
    JS IDE
    异常处理
    Throwable vs Exception
    8.4 Java 命名规范
    关键字、标识符、注释、变量
    Docker —— 从入门到实践
    RTC教程
  • 原文地址:https://www.cnblogs.com/yours1103/p/3425647.html
Copyright © 2011-2022 走看看