dijkstra ZOJ 2750 Idiomatic Phrases Game
2012-09-05 18:43
495 查看
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1750
题目大意:成语接龙,一串4*n的字符串,4个字符组成一个中文字,每个成语的结尾连接开头,从这个成语找到下一个成语,需要 t 时间,问从第一个到最后一个需要的最短时间是多少。
算法:dijkstra
思路:以每个成语的末尾为横轴,开头为纵轴建立邻接矩阵map(单向),套dijkstra模板。
题目大意:成语接龙,一串4*n的字符串,4个字符组成一个中文字,每个成语的结尾连接开头,从这个成语找到下一个成语,需要 t 时间,问从第一个到最后一个需要的最短时间是多少。
算法:dijkstra
思路:以每个成语的末尾为横轴,开头为纵轴建立邻接矩阵map(单向),套dijkstra模板。
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int inf = 0x7ffffff; struct nod { char pred[6], succ[6]; int t; }p[56566]; int vis[23232]; int dis[23232]; int map[1212][1212]; int n; void dijk() { int i, j, k; memset(vis, 0, sizeof(vis)); for(i = 1; i <= n; i ++) dis[i] = map[1][i]; vis[1] = 1; dis[1] = 0; for(i = 1; i < n; i ++) { int minc = inf; for(j = 1; j <= n; j ++) { if(!vis[j] && minc > dis[j]) { minc = dis[j]; k = j; } } if(minc == inf) break; vis[k] = 1; for(j = 1; j <= n; j ++) { if(!vis[j] && dis[j] > dis[k] + map[k][j]) dis[j] = dis[k] + map[k][j]; } } if(dis != inf) { printf("%d", dis ); } else printf("-1"); printf("\n"); } int main() { char str[1234]; int i, j; while(scanf("%d", &n) != EOF && n) { for(i = 1; i <= n; i ++) { scanf("%d%s", &p[i].t, str); int len = strlen(str); for(j = 0; j < 4; j ++) { p[i].pred[j] = str[j]; p[i].succ[j] = str[len-4+j]; } p[i].pred[j] = '\0'; p[i].succ[j] = '\0'; } for(i = 1; i <= n; i ++) { for(j = 1; j <= n; j ++) { map[i][j] = inf; if(j == i) continue; // printf("%s %s\n", p[i].succ, p[j].pred); if(strcmp(p[i].succ, p[j].pred) == 0) { map[i][j] = p[i].t; } // printf("%d ", map[i][j]); } // printf("\n"); } dijk(); } return 0; }
相关文章推荐
- ZOJ 2750 Idiomatic Phrases Game(邻接表+dijkstra)
- ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
- Idiomatic Phrases Game zoj 2750 Dijkstra
- ZOJ 2750 Idiomatic Phrases Game 最短路(dijkstra)
- hdu1546 zoj 2750 Idiomatic Phrases Game (dijkstra)
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- ZOJ2750_Idiomatic Phrases Game(最短路)
- Hdu 1546/Zoj 2750 Idiomatic Phrases Game
- zoj2750-Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- ZOJ:2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game【最短路】
- ZOJ - 2750 Idiomatic Phrases Game (最短路径)
- zoj 2750 Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game(最短路径)
- ZOJ 2750 Idiomatic Phrases Game(最短路,dij)