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 |
我用的Prim求最小生成树,WA,是题目理解错了呢,还是程序有bug?"/* *Descripttion: 2349 Arctic Network * It seems that this problem is a MST problem *More : Prim algorithm *Author : BlueBlood -- RTFSC *Time: 2005 - 12- 09 */ #include <iostream> #include <cstdlib> #include <cstdlib> #include <algorithm> #include <cmath> using namespace std; #define MAXWEIGHT 32767 typedef struct{ int vi; //head of a edge int vj; //tail of a edge double weight; } edge; int s; int p; double d; int * x; int * y; double ** adj; double *res; edge *T; void Prim( void ) { int m; int v; int nmin; double dis; edge e; //Initializing T; for (int j = 1; j < p; j++) { T[j-1].vi = 1; T[j-1].vj = j + 1; T[j-1].weight = adj[0][j]; } //find out the k+1 th MST's edge for (int k = 0; k < p - 1; k++) { nmin = MAXWEIGHT; //find the edge with the smallest weight from T[k],..., T[n-2] to join the MST; for (j = k; j < p - 1; j++) { if (T[j].weight < nmin) { nmin = T[j].weight; m = j; } } //Exchange T[m] & T[k]; e = T[m]; T[m] = T[k]; T[k] = e; //v is the number of the vertex newly added to MST v = T[k].vj; //Modify T[k + 1], T[k + 2],..., T[n - 1]; for (j = k + 1; j < p - 1; j++) { dis = adj[v-1][T[j].vj - 1]; if ( d < T[j].weight) { T[j].weight = dis; T[j].vi = v; } } } } int main() { int testCase; int i; int j; int k; cin >> testCase; for ( i = 0; i < testCase; i++) { cin >> s >> p; x = new int [p]; y = new int [p]; adj = new double * [p]; res = new double [p]; T = new edge [p]; for (j = 0; j < p; j++) { cin >> x[j] >> y[j]; adj[j] = new double [p]; } for (j = 0; j < p; j++) for (k = 0; k < p; k++) { if (k == j) adj[j][k] = MAXWEIGHT; else adj[j][k] = sqrt( (x[j] - x[k])*(x[j] - x[k]) + (y[j] - y[k])*(y[j] - y[k])); } Prim(); for ( i = 0; i < p - 1 ; i++) { res[i] = T[i].weight; } sort(&res[0], & res[p-1]); printf("%.2f\n",res[p-1-s]); } system("pause"); return 0; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator