Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
这一套题醛是H2O題???#include <stdio.h> #include <iostream> #include <cstdlib> #include <cstring> #include <vector> #include <algorithm> #include <queue> using namespace std; int MX = 2147483647; int toInt(char *a){ return (a[0]-'A')*26+a[1]-'A'; } int main(){ printf("SHIPPING ROUTES OUTPUT\n\n"); int n; scanf("%d",&n); for(int i = 1; i <= n; i++){ printf("DATA SET %d\n\n", i); int N,M,P; scanf("%d%d%d",&N,&M,&P); int adjNum[33] = {0}; int adj[33][33]; int dNum = 0; int idx[676] = {0}; for(int j = 0; j < N; j++){ char tmp[4]; scanf("%s",tmp); int ix = toInt(tmp); dNum++; idx[ix] = dNum; } for(int j = 0; j < M; j++){ char t1[4], t2[4]; scanf("%s%s",t1,t2); int i1 = idx[toInt(t1)], i2 = idx[toInt(t2)]; adj[i1][adjNum[i1]] = i2; adjNum[i1]++; adj[i2][adjNum[i2]] = i1; adjNum[i2]++; } for(int j = 0; j < P; j++){ int lg; char s[4], t[4]; scanf("%d%s%s",&lg,s,t); int is = idx[toInt(s)], it = idx[toInt(t)]; int dist[33]; for(int i = 1; i <= N; i++) dist[i] = MX; queue<int> bfs; dist[is] = 0; bfs.push(is); while(!bfs.empty()){ int cur = bfs.front(); bfs.pop(); for(int k = 0; k < adjNum[cur]; k++){ int x = adj[cur][k]; if(dist[x] == MX){ dist[x] = dist[cur]+1; if(x == it) goto done; bfs.push(x); } } } done: if(dist[it] == MX) printf("NO SHIPMENT POSSIBLE\n"); else printf("$%d\n", dist[it]*lg*100); } printf("\n"); } printf("END OF OUTPUT\n"); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator