HDU 4460 Friend Chains(2012年杭州赛区现场赛H题)
2012-11-09 11:32
585 查看
题意:一个有n个点,m条边的无向图,找出最短路中的两个点的路径最大值。
n次spfa求最短路,然后找出最大值即可,踩着时间线险过。。。
代码:
n次spfa求最短路,然后找出最大值即可,踩着时间线险过。。。
代码:
#include <iostream> #include <cstring> #include <algorithm> #include <cstdio> #include <queue> #include <string> #include <map> using namespace std; const int oo=1<<30; const int maxn=1001; const int maxm=20001; int n,m,num; int cnt; int dis[maxn],head[maxn]; bool vis[maxn]; queue<int>qu; map<string, int> mp; struct node{ int u; int v; int w; int next; }edge[maxm]; void add(int u, int v, int w){ edge[cnt].u=u; edge[cnt].v=v; edge[cnt].w=w; edge[cnt].next=head[u]; head[u]=cnt++; edge[cnt].u=v; edge[cnt].v=u; edge[cnt].w=w; edge[cnt].next=head[v]; head[v]=cnt++; } void spfa(int s){ for(int i=0; i<n; i++){ dis[i]=oo; vis[i]=false; } dis[s]=0; qu.push(s); vis[s]=true; while(!qu.empty()){ int u=qu.front(); qu.pop(); vis[u]=false; for(int i=head[u];i!=-1;i=edge[i].next){ int v=edge[i].v; if(dis[u]+edge[i].w<dis[v]){ dis[v]=dis[u]+edge[i].w; if(!vis[v]){ vis[v]=true; qu.push(v); } } } } } void init(){ while(!qu.empty()){ qu.pop(); } cnt=0; num=0; mp.clear(); memset(head, -1, sizeof(head)); } int main(){ string str; string str1; while(~scanf("%d",&n)){ init(); if(n==0) break; for(int i=0; i<n; i++){ cin>>str; mp[str]=i; } scanf("%d",&m); for(int i=0; i<m; i++){ cin>>str>>str1; int u=mp[str]; int v=mp[str1]; add(u, v, 1); } for(int i=0; i<n; i++){ spfa(i); for(int j=0; j<n; j++){ num=max(num,dis[j]); } } num=num==oo?-1:num; printf("%d\n",num); } return 0; }
相关文章推荐
- HDU 4460 Friend Chains 第37届ACM杭州赛区 H题
- HDU 4453 Looploop (2012年杭州赛区现场赛A题)
- HDU 4462 Scaring the Birds (2012年杭州赛区现场赛J题)
- HDU 4462 Scaring the Birds(2012年杭州赛区现场赛J题)
- HDU 4455 Substrings (2012年杭州赛区现场赛C题)
- HDU 4458 Shoot the Airplane (2012年杭州赛区现场赛F题)
- HDU 4463 Outlets 2012年亚洲区域赛杭州赛区现场赛K题
- HDU 4422 The Little Girl who Picks Mushrooms (2012年长春赛区现场赛C题)
- HDU 4460 Friend Chains(最短路)
- HDU 4455 Substrings 第37届ACM/ICPC 杭州赛区现场赛 C题 (DP)
- hdu_4460 Friend Chains bfs+vector
- HDU 4770 Lights Against Dudely -- 2013 杭州赛区现场赛-A(状态压缩)
- 2012杭州赛区(浙江理工大学)H - Friend Chains
- HDU 4460 Friend Chains(SPFA+邻接表)
- hdu 4460 Friend Chains 题解(SPFA)
- HDU 4460 Friend Chains --BFS
- HDU 4460 Friend Chains 【最短路(bfs优化)】
- HDU 4460 Friend Chains (BFS,最长路径)
- HDU 4778 2013 ACM/ICPC 杭州赛区现场赛 I. Gems Fight!
- HDU 4460 Friend Chains -多源最短路裸题