ZOJ - 2750 Idiomatic Phrases Game (最短路径)
2014-07-28 22:10
483 查看
题目:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1750
题意:
n个成语,前一个成语的最后一个字,与后一个成语的第一个字相同,求最小查询时间
分析:
有向图,查询时间作为权值,Dijkstra算法
代码:
题意:
n个成语,前一个成语的最后一个字,与后一个成语的第一个字相同,求最小查询时间
分析:
有向图,查询时间作为权值,Dijkstra算法
代码:
#include <stdio.h> #include <iostream> #include <string.h> #include <string> #include <math.h> #include <algorithm> #include <queue> #include <stack> #include <vector> #include <map> using namespace std; #define MAX 1000 #define MIN -1e+10 #define INF 0x7f7f7f7f int t, n, m; int Edge[MAX][MAX]; int s[MAX]; // 已达点 - 未达点 int dist[MAX]; // 由起点出发,到达i的最小距离 void Dijkstra() { int i, j; for(i = 1; i<=n; i++) // 起点为1 { s[i] = 0; dist[i] = Edge[1][i]; } s[1] = 1; dist[1] = 0; for(i = 1; i<n; i++) { int mint = INF, v = -1; for(j = 1; j<=n; j++) // 找出当前,由已达点到未达点的最小距离 { if(!s[j] && dist[j] < mint) { mint = dist[j]; v = j; } } if(v == -1) break; s[v] = 1; for(j = 1; j<=n; j++) // 维护更新已达点到未达点的距离 { if(!s[j] && dist[j] > Edge[v][j] + dist[v]) { dist[j] = Edge[v][j] + dist[v]; } } } printf("%d\n", dist <INF?dist :-1); } struct Node { int w; char begin[5], end[5]; }a[1000+10]; int main() { int i, j; freopen("a.txt", "r", stdin); while(~scanf("%d", &n) && n) { char str[1000+10]; for(i = 1; i<=n; i++) { scanf("%d%s", &a[i].w, str); strncpy(a[i].begin, str, 4); a[i].begin[4] = '\0'; strcpy(a[i].end, str+strlen(str) - 4); } memset(Edge, INF, sizeof(Edge)); for(i = 1; i<=n; i++) { for(j = 1; j<=n; j++) { if(strcmp(a[i].end, a[j].begin) == 0) { Edge[i][j] = a[i].w; } } } Dijkstra(); } return 0; }
相关文章推荐
- zoj 2750 Idiomatic Phrases Game(最短路径)
- zoj 2750 Idiomatic Phrases Game
- (dijkstra 1.1)hdu 1546 Idiomatic Phrases Game(dijkstra——当建图规则为:当一个单词的后4个字符和另一个单词的前4个字符一致时才建边,求最短路径)
- zoj 2750 Idiomatic Phrases Game
- ZOJ2750_Idiomatic Phrases Game(最短路)
- hdu1546 zoj 2750 Idiomatic Phrases Game (dijkstra)
- zoj 2750 Idiomatic Phrases Game
- zoj2750-Idiomatic Phrases Game
- zoj 2750 Idiomatic Phrases Game
- ZOJ 2750 Idiomatic Phrases Game(邻接表+dijkstra)
- ZOJ2750_Idiomatic Phrases Game(最短路)
- D - Idiomatic Phrases Game(最短路径)
- zoj 2750 Idiomatic Phrases Game
- ZOJ 2750 Idiomatic Phrases Game 最短路(dijkstra)
- zoj 2750 Idiomatic Phrases Game
- ZOJ-2750- Idiomatic Phrases Game
- ZOJ 2750 Idiomatic Phrases Game(Dijkstra)
- zoj 2750 Idiomatic Phrases Game(最短路)
- Idiomatic Phrases Game zoj 2750 Dijkstra
- ZOJ:2750 Idiomatic Phrases Game