HDU-#4460 Friend Chains(bfs)
来源:互联网 发布:c语言联合体初始化为0 编辑:程序博客网 时间:2024/04/29 15:47
题目大意:给出n个人以及m种朋友关系,求一个系数k,使得任意两人的关系长度不会超过k。
解题思路:最容易想到的是Floyd算法,求出每两人之间的的距离,然后更新最长关系值。但在这样O(N^3)会超时,这里可以用bfs去跑出所有点的距离,然后再判断。也可利用SPFA算法进行求解,这与bfs的写法相差不大。不过还有大神用了字典树来写,实在是高呀。这里给出bfs的code。
题目来源:http://acm.hdu.edu.cn/showproblem.php?pid=4460
bfs code:
#include <iostream>#include <cstdio>#include <cstring>#include <map>#include <queue>#include <vector>#include <algorithm>using namespace std;const int MAXN = 1000+10;const int inf = 0x3fffffff;int ans,n,m;char str[15],str1[15],str2[15];int vis[MAXN],dist[MAXN][MAXN];map<string,int> h;vector<int> g[MAXN];queue<int> q;void bfs(int x){ memset(vis,0,sizeof(vis)); dist[x][x]=0; vis[x]=1; q.push(x); while(!q.empty()){ int t=q.front();q.pop(); int len=g[t].size(); for(int i=0;i<len;++i){ int v=g[t][i]; if(vis[v]) continue; dist[x][v]=dist[x][t]+1; q.push(v); vis[v]=1; } }}int main(){ //freopen("input.txt","r",stdin); while(~scanf("%d",&n) && n){ getchar(); h.clear(); for(int i=0;i<n;++i) g[i].clear(); for(int i=0;i<n;++i){ dist[i][i]=0; for(int j=i+1;j<n;++j) dist[i][j]=dist[j][i]=inf; } for(int i=0;i<n;++i){ scanf("%s",str); h[str]=i; } scanf("%d",&m); getchar(); for(int i=0;i<m;++i){ scanf("%s %s",str1,str2); g[h[str1]].push_back(h[str2]); g[h[str2]].push_back(h[str1]); } for(int i=0;i<n;++i) bfs(i); ans=0; for(int i=0;i<n;++i) for(int j=i+1;j<n;++j) ans=max(ans,dist[i][j]); if(ans==inf) printf("-1\n"); else printf("%d\n",ans); } return 0;}
0 0
- HDU-#4460 Friend Chains(bfs)
- HDU 4460 Friend Chains(BFS)
- hdu 4460 Friend Chains (BFS)
- hdu 4460 Friend Chains(BFS)
- HDU 4460 Friend Chains --BFS
- hdu 4460 Friend Chains(bfs)
- HDU 4460 Friend Chains BFS 最短路
- HDU 4460 Friend Chains 【bfs】【spfa】
- hdu 4460 Friend Chains
- hdu 4460 Friend Chains
- HDU 4460 Friend Chains
- HDU 4460 Friend Chains
- hdu-4460 Friend Chains
- HDU 4460 Friend Chains
- HDU 4460 Friend Chains
- HDU 4460Friend Chains(对每个点BFS)
- hdu 4460 Friend Chains 题解(SPFA)
- hdu 4460 Friend Chains (限制条件的spfa)
- 如果回到十八岁,我要对自己说......
- MySQL会出现中文乱码的原因不外乎下列几点
- C#-记录打开过的文件---ShinePans
- Spark快速入门指南
- ZOJ 3829 Known Notation (2014牡丹江H题)
- HDU-#4460 Friend Chains(bfs)
- 系统如何销毁一个窗口
- KMP小结
- 编译Android源码与内核总结
- CUDA入门教程(一)
- Implementing SoD in SQL Server
- 第八周项目4
- VMware-Fusion-7.0.0-2103067 Pro SN:序列号+ 百度云下载地址
- 【树链剖分模板】【bzoj1036】: [ZJOI2008]树的统计Count