這題是某年成都區(qū)域賽網(wǎng)絡(luò)賽的一題。
? ? ? ? 這題思路非常easy,可是從時(shí)間上考慮,不妨不要用矩陣存儲(chǔ),我用的鏈?zhǔn)角跋蛐恰?
? ? ? ? 採(cǎi)用線上查詢。利用map對(duì)字符串編號(hào),由于非常方便。要推薦的朋友,事實(shí)上就是朋友的朋友(這里指的是直接朋友,圖中即指有直接邊相連的)。
? ? ? ? 所以在尋找時(shí),僅僅須要查找朋友的朋友,并計(jì)數(shù)。
? ? ? ? 注意:在輸出時(shí)不能有對(duì)于的空格。 ? ? ? ??
? ? ??
?附代碼:
? ?
#include<iostream> using namespace std; #include<cstdio> #include<cstdlib> #include<cstring> #include<map> #include<algorithm> int n,m; char s11[20],s22[20]; string g[20100],l[20100]; int next[201000],head[2010],key[201000]; int num; void add(int u,int v) { key[num]=v; next[num]=head[u]; head[u]=num++; } int main() { int T,pp=0; scanf("%d",&T); while (T--) { map<string,int> hash; int n,m,i,j,k; string s1,s2; int cnt=0; num=0; scanf("%d%d",&n,&m); memset(head,-1,sizeof(head)); for (i=0;i<n;++i) { scanf("%s%s",s11,s22); s1=string(s11); s2=string(s22); if (hash[s1]==0) hash[s1]=++cnt,l[cnt]=s1; if (hash[s2]==0) hash[s2]=++cnt,l[cnt]=s2; add(hash[s1],hash[s2]); add(hash[s2],hash[s1]); } printf("Case %d:\n",++pp); for (i=0;i<m;++i) { scanf("%s",s11); s1=string(s11); int p=hash[s1]; int f[20100],flag[20010]; memset(f,0,sizeof(f)); memset(flag,0,sizeof(flag)); for (k=head[p];k!=-1;k=next[k]) flag[key[k]]=-1; for (k=head[p];k!=-1;k=next[k]) if (key[k]!=p) { for (j=head[key[k]];j!=-1;j=next[j]) if (key[j]!=key[k] && key[j]!=p && flag[key[j]]==0) { f[key[j]]++; } } int Max=-1; for (k=1;k<=cnt;++k) { Max=max(Max,f[k]); // printf("%d\n",f[k]); } if (Max==0) { printf("-\n"); continue; } int q=0; for (k=1;k<=cnt;++k) if (Max==f[k]) { g[q++]=l[k]; } sort(g,g+q); for (k=0;k<q-1;++k) cout << g[k] << " "; cout << g[q-1]; cout << endl; } } return 0; }
36th成都區(qū)域賽網(wǎng)絡(luò)賽 hdoj4039 The Social Network(建圖+字符串處理)
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
