set

xiaoxiao2021-02-28  51

#include<bits/stdc++.h> #define eps 1e-9 #define ALL(x) x.begin(),x.end() #define INS(x) inserter(x,x.begin()) #define FOR(i,j,k) for(int i=j;i<=k;i++) #define MAXN 1005 #define MAXM 40005 #define INF 0x3fffffff using namespace std; typedef long long LL; int i,j,k,n,m,x,y,T,ans,big,cas,num,len,an,bn,ans_num,cur; bool flag; map <string,int> mp; vector <int> st[10002]; int vis[10002]; int tmp[10002]; string a,b,rev[10002]; int main() { scanf("%d",&n); for (i=1;i<=n;i++) st[i].clear(); mp.clear(); memset(tmp,0,sizeof(tmp)); num=0; an=bn=0; ans_num=0; cur=0; ans=0; for (i=1;i<=n;i++) { cin>>a>>b; if (!mp.count(a)) { mp[a]=++num; rev[num]=a; an=num; }else an=mp[a]; if (!mp.count(b)) { mp[b]=++num; rev[num]=b; bn=num; }else bn=mp[b]; st[an].push_back(bn); st[bn].push_back(an); } for (i=1;i<=num;i++) { sort(st[i].begin(),st[i].end()); } printf("%d\n",num); for (i=1;i<=num;i++) { int pre=0; cur=0;ans=0;ans_num=0; memset(vis,0,sizeof(vis)); for (vector <int> ::iterator it=st[i].begin();it!=st[i].end();it++) { vis[*it]=1; } vis[i]=1; for (j=1;j<=num;j++) { if (vis[j]) continue; cur=set_intersection(st[i].begin(),st[i].end(),st[j].begin(),st[j].end(),tmp)-tmp; if (cur>ans_num) { ans_num=cur; ans=1; }else if (cur==ans_num) { ans++; } } cout<<rev[i]<<" "<<ans<<endl; } return 0; }
转载请注明原文地址: https://www.6miu.com/read-63150.html

最新回复(0)