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 |
Re:数据见内,我相信很多解题报告的确错了,如果牛人们发现是我读错题了,欢迎指正In Reply To:数据见内,我相信很多解题报告的确错了,如果牛人们发现是我读错题了,欢迎指正 Posted by:Moon_1st at 2011-03-15 10:34:59 我的AC代码: #include <iostream> #include <cstdio> #include <cstring> using namespace std; const int N = 510; const int INF = 0x7FFFFFFF; int n, m, pre[N], dist[N], map[N][N]; bool visit[N]; int abs(int x) { if(x < 0) return -x; else return x; } void dijkstra() { int i, j, k, Min; for(i = 1; i <= n; i++) { dist[i] = map[1][i]; pre[i] = 1; } memset(visit, false, sizeof(visit)); visit[1] = true; for(k = 1; k < n; k++) { j = 0; Min = INF; for(i = 1; i <= n; i++) if(!visit[i] && dist[i]!=-1 && dist[i]<Min) { Min = dist[i]; j = i; } visit[j] = true; for(i = 1; i <= n; i++) if(!visit[i] && map[j][i]!=-1 && (dist[i]==-1 || dist[i]>dist[j]+map[j][i])) { dist[i] = dist[j] + map[j][i]; pre[i] = j; } } } int main() { int a, b, l, i, j, Case = 0, flag, v, tmp, tv, ans; while(scanf("%d%d", &n, &m) != EOF) { if(n==0 && m==0) break; memset(map, -1, sizeof(map)); for(i = 1; i <= n; i++) map[i][i] = 0; for(i = 0; i < m; i++) { scanf("%d%d%d", &a, &b, &l); if(map[a][b]==-1 || map[a][b]>l) map[a][b] = map[b][a] = l; } dijkstra(); ans = flag = 0; v = 1; for(i = 1; i <= n; i++) { if(dist[i] > ans) { ans = dist[i]; v = i; } } for(i = 1; i <= n; i++) for(j = i+1; j <= n; j++) if(pre[i]!=j && pre[j]!=i && map[i][j]!=-1) { tmp = abs(dist[i]-dist[j]); if(tmp == map[i][j]) continue; if(max(dist[i], dist[j])+(map[i][j]-tmp-1)/2 >= ans) { ans = max(dist[i], dist[j])+(map[i][j]-tmp-1)/2; flag = 1; v = i; tv = j; } } printf("System #%d\n", ++Case); if(n == 1) { printf("The last domino falls after 0.0 seconds, at key domino 1.\n\n"); continue; } if(flag == 0) printf("The last domino falls after %d.0 seconds, at key domino %d.\n", ans, v); else printf("The last domino falls after %d.5 seconds, between key dominoes %d and %d.\n", ans, v, tv); printf("\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