hdu 1546 Idiomatic Phrases Game (spfa)
2014-12-03 17:10
405 查看
读取的字符串一定要开的大一点啊
不然就是无尽的RE
不然就是无尽的RE
#include<stdio.h> #include<string.h> #include<iostream> #include<algorithm> #include<queue> using namespace std; const int N = 1005; const int inf = 1 << 28; struct pp{ int st, ed, val; }p ; struct node{ int nxt, to, w; }e[N*N]; int head , vis , dis ; int n, cnt; void add( int u, int v, int w ) { e[cnt].to = v; e[cnt].w = w; e[cnt].nxt = head[u]; head[u] = cnt++; } void build() { memset(head, -1, sizeof(head)); cnt = 0; for( int i = 1; i <= n; i++ ) { for( int j = 1; j <= n; j++ ) { if( p[i].ed == p[j].st && i != j ) { add(i, j, p[i].val); } } } } void spfa() { queue<int> q; while( !q.empty() ) q.pop(); for( int i = 1; i <= n; i++ ) { dis[i] = inf; vis[i] = 0; } q.push(1); dis[1] = 0; vis[1] = 1; while( !q.empty() ) { int now = q.front(); q.pop(), vis[now] = 0; for ( int i = head[now]; ~i; i = e[i].nxt ) { int to = e[i].to; if( dis[to] > dis[now] + e[i].w ) { dis[to] = dis[now] + e[i].w; if( !vis[to] ) { vis[to] = 1; q.push(to); } } } } } int main() { while(~scanf("%d", &n) && n ) { char a[200]; for ( int i = 1; i <= n; i++ ) { scanf("%d", &p[i].val); scanf("%s", a+1); int s = 0, e = 0; for( int j = 1; j <= 4; j++ ) { if( a[j] >= '0' && a[j] <= '9' ) s = s * 10 + a[j] - '0'; else s = s * 10 + a[j] - 'A' + 10; } for( int j = strlen(a+1) - 3; j <= strlen(a+1); j++ ) { if( a[j] >= '0' && a[j] <= '9' ) e = e * 10 + a[j] - '0'; else e = e * 10 + a[j] - 'A' + 10; } //printf("%d %d\n", s, e); p[i].st = s, p[i].ed = e; } build(); spfa(); printf("%d\n", dis == inf? -1: dis ); } return 0; }
相关文章推荐
- hdu 1546 Idiomatic Phrases Game 最短路spfa
- HDU 1546 Idiomatic Phrases Game 基础最短路spfa
- HDU 1546 Idiomatic Phrases Game 最短路
- HDU-1546-Idiomatic Phrases Game
- hdu 1546 Idiomatic Phrases Game (最短路)
- HDU 1546 Idiomatic Phrases Game(dijkstra+优先队列)
- (dijkstra 1.1)hdu 1546 Idiomatic Phrases Game(dijkstra——当建图规则为:当一个单词的后4个字符和另一个单词的前4个字符一致时才建边,求最短路径)
- Idiomatic Phrases Game HDU 1546
- HDU 1546 Idiomatic Phrases Game(最短路径)DIJ算法
- HDU 1546 Idiomatic Phrases Game
- hdu1546——Idiomatic Phrases Game
- hdu 1546 Idiomatic Phrases Game(最短路)
- 【HDU】1546 Idiomatic Phrases Game 最短路
- HDU 1546 Idiomatic Phrases Game(Dijkstra)
- Idiomatic Phrases Game HDU 1546
- hdu 1546 Idiomatic Phrases Game
- Hdu 1546/Zoj 2750 Idiomatic Phrases Game
- HDU 1546 Idiomatic Phrases Game 简单最短路
- HDU 1546 Idiomatic Phrases Game(最短路,Dijsktra,理解题意很重要)
- HDU1546 Idiomatic Phrases Game 最短路径(Dijkstra算法)