hdu4460-最短路&思维- Friend Chains
2017-09-21 16:07
387 查看
http://acm.hdu.edu.cn/showproblem.php?pid=4460
郁闷死,,开始用floyd写的,1e9左右。。
肯定超时,然后感觉暴力最短路这样 1e7了估计也够呛。
试一下是能写的。。暴力最短路。。
用了两种写法, 都是可以的。并且很像。
郁闷死,,开始用floyd写的,1e9左右。。
肯定超时,然后感觉暴力最短路这样 1e7了估计也够呛。
试一下是能写的。。暴力最短路。。
用了两种写法, 都是可以的。并且很像。
#include <bits/stdc++.h> using namespace std; const int maxn=20005; int m,n; const int inf=0x3f3f3f3f; map<string,int>mp; string s,s2; int d[maxn]; int len; int head[maxn]; struct Node { int to,from,next; }node[maxn]; void add(int a,int b,int c){ node[len].to=b; node[len].next=head[a]; head[a]=len++; } void init(){ len=0; memset(head,-1,sizeof(head)); } bool vis[maxn]; /*void spfa(int s){ queue<int>q; memset(vis,false,sizeof(vis)); memset(d,0x3f,sizeof(d)); q.push(s); d[s]=0; vis[s]=true; while(!q.empty()){ int u=q.front(); q.pop(); vis[u]=false; for(int i=head[u];i!=-1;i=node[i].next){ int to=node[i].to; if(d[to]>d[u]+1){ d[to]=d[u]+1; if(!vis[to]){ vis[to]=true; q.push(to); } } } } }*/ struct qnode { int to,dis; qnode(int _a,int _b){to=_a,dis=_b;} bool operator<(const qnode&r)const{ return dis>r.dis; } }; void dijkstra(int s){ priority_queue<qnode>q; memset(d,0x3f,sizeof(d)); memset(vis,false,sizeof(vis)); q.push(qnode(s,0)); d[s]=0; vis[s]=true; while(!q.empty()){ qnode u=q.top(); q.pop(); vis[u.to]=false; for(int i=head[u.to];i!=-1;i=node[i].next){ int to=node[i].to; if(d[to]>d[u.to]+1){ d[to]=d[u.to]+1; if(!vis[to]){ vis[to]=true; q.push(qnode(to,d[to])); } } } } } int main() { ios::sync_with_stdio(false); while(cin>>m){ mp.clear(); if(!m) break; init(); for(int i=1;i<=m;i++){ cin>>s; mp[s]=i; } cin>>n; for(int i=0;i<n;i++){ cin>>s>>s2; add(mp[s],mp[s2],1); add(mp[s2],mp[s],1); } bool flag=false; int ans=-1; for(int i=1;i<=m&&!flag;i++){ dijkstra(i); for(int j=1;j<=m&&!flag;j++){ if(i==j)continue; ans=max(ans,d[j]); if(d[j]==inf){ flag=true; } } } if(flag) puts("-1"); else printf("%d\n",ans); } return 0; }
相关文章推荐
- hdu 4460 Friend Chains # 最短路的最大值
- HDU4460 Friend Chains
- 2017 Multi-University Training Contest 9 && HDU 6166 Senior Pan 【最短路+思维】
- hdu4460 Friend Chains
- CodeChef:Two Closest(最短路 & 思维)
- HDU 4460 Friend Chains(最短路)
- hdu6152-CCPC网络赛&思维&拉姆齐定理-Friend-Graph
- HDU 4460 Friend Chains(任意两点最短路的最大值 bfs或spfa)
- 顶点对间最短路: SPFA —— 2012.11.04 ACM 杭州 现场赛 H题:Friend Chains!
- HDU4460-Friend Chains-BFS+bitset优化
- hdu6071-最短路&思维&多校4&同余-Lazy Running
- HDU 4460 Friend Chains 【最短路(bfs优化)】
- HDU 4460 Friend Chains BFS 最短路
- UVALive 6378 Friend Chains (多源最短路 spfa)
- HDU 4460 Friend Chains -多源最短路裸题
- POJ 2135 Farm Tour && HDU 2686 Matrix && HDU 3376 Matrix Again 费用流求来回最短路
- 按位与&和短路与&&区别<转载>
- HDU2544---最短路(dijkstra&&floyd&&spfa)
- 逻辑 & 短路
- POJ 2449 Remmarguts' Date (第k短路 A*搜索算法模板)