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 |
特别要注意n=1,应该输出0.0 1#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <string> #include <vector> #include <set> #include <map> #include <queue> #include <stack> #include <cstdlib> #include <sstream> using namespace std; typedef long long LL; const LL INF = 0x5fffffff; const double EXP = 1E-9; const LL MOD = (LL)1E9+7; const int MS = 505; // poj 1135 int dis[MS]; int edges[MS][MS]; int flag[MS]; int n, m, kase = 1; void SP(int s) { for (int i = 1; i <= n; i++) { dis[i] = edges[s][i]; flag[i] = 0; } flag[s] = 1; dis[s] = 0; for (int i = 1; i < n; i++) { int minv = INF; int u = -1; for (int v = 1; v <= n; v++) { if (flag[v] == 0 && minv > dis[v]) { minv = dis[v]; u = v; } } flag[u] = 1; for (int v = 1; v <= n; v++) { if (flag[v] == 0 && edges[u][v] < INF && dis[v] > dis[u] + edges[u][v]) { dis[v] = dis[u] + edges[u][v]; } } } int maxv1 = 0; int pos = 1; for (int i = 1; i <= n; i++) { if (dis[i] > maxv1) { maxv1 = dis[i]; pos = i; } } double maxv2 = 0; int pos1 = 1, pos2 = 1; for (int i = 1; i <= n; i++) { for (int j = i + 1; j <= n; j++) { double t = (dis[i] + dis[j] + edges[i][j]) / 2.0; if (edges[i][j] < INF && maxv2 < t) { maxv2 = t; pos1 = i; pos2 = j; } } } printf("System #%d\n", kase++); if ((maxv1 + EXP ) > maxv2) printf("The last domino falls after %.1lf seconds, at key domino %d.\n", (double)maxv1, pos); else printf("The last domino falls after %.1lf seconds, between key dominoes %d and %d.\n", maxv2, pos1, pos2); printf("\n"); } int main() { while (scanf("%d%d", &n, &m) == 2 && (n + m)) { int u, v, w; for (int i = 0; i <= n; i++) fill(edges[i], edges[i] + n + 1, INF); for (int i = 0; i < m; i++) { scanf("%d%d%d", &u, &v, &w); edges[u][v] = edges[v][u] = w; } SP(1); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator