zoukankan      html  css  js  c++  java
  • hdu 4039 2011成都赛区网络赛I ***

    两层搜索,直接for循环就行了,还要注意不能是自己的朋友

      1 #include<cstdio>
      2 #include<iostream>
      3 #include<algorithm>
      4 #include<cstring>
      5 #include<cmath>
      6 #include<queue>
      7 #include<map>
      8 using namespace std;
      9 #define MOD 1000000007
     10 const int INF=0x3f3f3f3f;
     11 const double eps=1e-5;
     12 typedef long long ll;
     13 #define cl(a) memset(a,0,sizeof(a))
     14 #define ts printf("*****
    ");
     15 const int MAXN=2050;
     16 int n,m,tt;
     17 char s1[100],s2[100];
     18 int vis[MAXN];
     19 map<string,int> mp;
     20 vector<int> vc[MAXN];
     21 int w;
     22 struct Str
     23 {
     24     char str[20];
     25 }s[MAXN],ss[MAXN];
     26 bool cmp1(Str a,Str b)
     27 {
     28     return strcmp(a.str,b.str)<0;
     29 }
     30 int sum=1,to,id,Max;
     31 bool flag[MAXN];
     32 int bfs(int x)
     33 {
     34     sum=0;
     35     id,Max=0;
     36     for(int i=1;i<=w;i++)    vis[i]=0,flag[i]=0;
     37     flag[x]=1;
     38     for(int i=0;i<vc[x].size();i++)
     39     {
     40         flag[vc[x][i]]=1;
     41     }
     42     for(int j=0;j<vc[x].size();j++)
     43     {
     44         int e=vc[x][j];
     45         for(int i=0;i<vc[e].size();i++)
     46         {
     47             int y=vc[e][i];
     48             if(!flag[y])
     49             {
     50                 vis[y]++;//
     51                 if(Max<vis[y])
     52                 {
     53                     Max=vis[y];
     54                     id=y;
     55                     ss[0]=s[y];
     56                     sum=1;
     57                 }
     58             }
     59         }
     60     }
     61     for(int i=1;i<=w;i++)
     62     {
     63         if(Max==vis[i]&&id!=i)
     64         {
     65             strcpy(ss[sum++].str,s[i].str);
     66         }
     67     }
     68     if(Max==0)  return 0;
     69     else return sum;
     70 }
     71 int main()
     72 {
     73     int i,j,k;
     74     #ifndef ONLINE_JUDGE
     75     freopen("1.in","r",stdin);
     76     #endif
     77     scanf("%d",&tt);
     78     int ca=1;
     79     while(tt--)
     80     {
     81         printf("Case %d:
    ",ca++);
     82         scanf("%d%d",&n,&m);
     83         int tot=1;
     84         int u,v;
     85         mp.clear();
     86         for(i=0;i<=2*n;i++) vc[i].clear();
     87         for(i=0;i<n;i++)
     88         {
     89             scanf("%s%s",s1,s2);
     90             if(!mp[s1]) mp[s1]=tot++,u=tot-1,strcpy(s[tot-1].str,s1);
     91             else u=mp[s1];
     92             if(!mp[s2]) mp[s2]=tot++,v=tot-1,strcpy(s[tot-1].str,s2);
     93             else v=mp[s2];
     94             vc[u].push_back(v);
     95             vc[v].push_back(u);
     96         }
     97         w=tot;
     98         while(m--)
     99         {
    100             scanf("%s",s1);
    101             int q=bfs(mp[s1]);
    102             if(q==1)
    103             {
    104                 cout<<ss[0].str<<endl;
    105             }
    106             else if(q>=2)
    107             {
    108                 sort(ss,ss+q,cmp1);
    109                 cout<<ss[0].str;
    110                 for(i=1;i<q;i++)
    111                 {
    112                     cout<<" "<<ss[i].str;
    113                 }
    114                 cout<<endl;
    115             }
    116             else
    117             {
    118                 printf("-
    ");
    119             }
    120         }
    121     }
    122 }
  • 相关阅读:
    java之数组使用以及拓展
    Java之数组介绍
    方法
    break&continue
    networkmanager is not running 网络管理没有运行
    CentOS-7修改IP
    操作系统
    计算机基础理论
    编码和解码
    pyQuery库
  • 原文地址:https://www.cnblogs.com/cnblogs321114287/p/4708522.html
Copyright © 2011-2022 走看看