• ural 1837 Isenbaev's Number


    http://acm.timus.ru/problem.aspx?space=1&num=1837

      1 #include <cstdio>
      2 #include <cstring>
      3 #include <vector>
      4 #include <string>
      5 #include <iostream>
      6 #include <queue>
      7 #include <algorithm>
      8 using namespace std;
      9 vector<int>q[500];
     10 
     11 struct node
     12 {
     13     string s;
     14     int num;
     15     bool operator <(const node &a)const
     16     {
     17         return s<a.s;
     18     }
     19 } p1[500*3];
     20 int t1;
     21 
     22 int getnum(string c)
     23 {
     24     for(int i=0; i<t1; i++)
     25     {
     26         if(c==p1[i].s) return i;
     27     }
     28     p1[t1++].s=c;
     29     return t1-1;
     30 }
     31 
     32 void bfs(int str)
     33 {
     34     queue<int>qq;
     35     bool vis[50000];
     36     memset(vis,false,sizeof(vis));
     37     qq.push(str);
     38     p1[str].num=0;
     39     vis[str]=true;
     40     while(!qq.empty())
     41     {
     42         int m=qq.front();
     43         qq.pop();
     44         for(int j=0; j<q[m].size(); j++)
     45         {
     46             int x=q[m][j];
     47             vis[x]=true;
     48             if(p1[x].num==-1111){
     49             p1[x].num=p1[m].num+1;
     50             qq.push(x);
     51             }
     52         }
     53     }
     54 }
     55 
     56 int main()
     57 {
     58     int t;
     59     scanf("%d",&t);
     60     string s1,s2,s3;
     61     t1=0;
     62     int k1,k2,k3;
     63     for(int i=1; i<=t; i++)
     64     {
     65         cin>>s1>>s2>>s3;
     66         k1=getnum(s1);
     67         k2=getnum(s2);
     68         k3=getnum(s3);
     69         q[k1].push_back(k2);
     70         q[k1].push_back(k3);
     71         q[k2].push_back(k1);
     72         q[k2].push_back(k3);
     73         q[k3].push_back(k1);
     74         q[k3].push_back(k2);
     75     }
     76     for(int j=0; j<t1; j++)
     77     {
     78         p1[j].num=-1111;
     79     }
     80     string s4="Isenbaev";
     81     int num1;
     82     bool flag=false;
     83     for(int j=0; j<t1; j++)
     84     {
     85         if(p1[j].s==s4)
     86         {
     87             flag=true;
     88             num1=j;
     89             break;
     90         }
     91     }
     92     if(flag)
     93     bfs(num1);
     94     sort(p1,p1+t1);
     95     for(int i=0; i<t1; i++)
     96     {
     97         if(p1[i].num==-1111)
     98         {
     99             cout<<p1[i].s<<" "<<"undefined"<<endl;
    100         }
    101         else
    102              cout<<p1[i].s<<" "<<p1[i].num<<endl;
    103     }
    104     return 0;
    105 }
    View Code
  • 相关阅读:
    第五天站立会议记录
    第四天站立会议
    第三天站立会议
    第二天站立会议
    冲刺会议第三天
    冲刺会议第二天
    团队建议总结
    第二次冲刺第一天
    项目总结(09)
    第七天站立会议
  • 原文地址:https://www.cnblogs.com/fanminghui/p/3608721.html
Copyright © 2020-2023  润新知