hdu 1546 Idiomatic Phrases Game
2014-04-26 16:32
351 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1546
View Code
#include <cstdio> #include <iostream> #include <queue> #include <cstring> #include <algorithm> #define maxn 1001 using namespace std; const int inf=1<<30; int a[maxn],n; int g[maxn][maxn]; char str[maxn][maxn]; int dis[maxn]; bool vis[maxn]; void spfa() { queue<int>q; memset(vis,false,sizeof(vis)); for(int i=0; i<=n; i++) dis[i]=inf; dis[0]=0; vis[0]=true; q.push(0); while(!q.empty()) { int u=q.front(); q.pop(); vis[u]=false; for(int i=0; i<n; i++) { if(g[u][i]!=inf&&dis[i]>dis[u]+g[u][i]) { dis[i]=dis[u]+g[u][i]; if(!vis[i]) { q.push(i); vis[i]=true; } } } } } int main() { while(scanf("%d",&n)!=EOF) { if(n==0) break; for(int i=0; i<n; i++) { cin>>a[i]>>str[i]; } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(i==j) g[i][j]=0; else g[i][j]=inf; } } for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(i==j) continue; bool flag=false; int k=strlen(str[i]); for(int c=0; c<4; c++) { if(str[i][k+c-4]!=str[j][c]) { flag=true; break; } } if(!flag) { g[i][j]=a[i]; } } } /*for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { printf("%d ",g[i][j]); } printf("\n"); }*/ spfa(); if(dis[n-1]==inf) printf("-1\n"); else printf("%d\n",dis[n-1]); } return 0; }
View Code
相关文章推荐
- HDU 1546 Idiomatic Phrases Game(dijkstra+优先队列)
- 【HDU】1546 Idiomatic Phrases Game 最短路
- Hdu 1546/Zoj 2750 Idiomatic Phrases Game
- Idiomatic Phrases Game HDU 1546
- hdu 1546 Idiomatic Phrases Game 最短路spfa
- HDU 1546 Idiomatic Phrases Game
- HDU 1546 Idiomatic Phrases Game 基础最短路spfa
- hdu 1546 Idiomatic Phrases Game (最短路)
- hdu1546——Idiomatic Phrases Game
- HDU 1546 Idiomatic Phrases Game(最短路径)DIJ算法
- HDU1546 Idiomatic Phrases Game 最短路径(Dijkstra算法)
- Idiomatic Phrases Game HDU 1546
- hdu 1546 Idiomatic Phrases Game
- hdu 1546 Idiomatic Phrases Game(最短路)
- HDU 1546 Idiomatic Phrases Game
- HDU-1546 Idiomatic Phrases Game
- hdu 1546 Idiomatic Phrases Game【dijkstra】
- HDU 1546 Idiomatic Phrases Game 简单最短路
- HDU 1546 Idiomatic Phrases Game 最短路
- (dijkstra 1.1)hdu 1546 Idiomatic Phrases Game(dijkstra——当建图规则为:当一个单词的后4个字符和另一个单词的前4个字符一致时才建边,求最短路径)