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:wow452 at 2013-02-18 11:10:27 > #include<stdio.h> > #include<stdlib.h> > > const int MAX =0x7fffffff; > int lowcost[110]; > int g[110][110]; > int visited[110]; > > void init(int n) > { > int i; > int j; > for(i = 1;i <= n; i++){ > lowcost[i] = 0; > visited[i] = 0; > } > for(i = 1; i <= n; i++){ > for(j = 1; j <= n; j++) > g[i][j] = MAX; > g[i][i] = 0; > } > > } > > int getmin(int a, int b){ > if(a > b) > a = b; > return a; > } > > int main() > { > int n; > int m; > int i; > int j; > int k; > int x; > int y; > int dis; > int min; > int ans; > while(1){ > scanf("%d", &n); > if(!n) > break; > scanf("%d", &m); > if(!m){ > printf("0\n"); > continue; > } > ans = 0; > init(n); > while(m--){ > scanf("%d%d%d", &x, &y, &dis); > if(!g[x][y]) > g[x][y] = g[y][x] = dis; > else > g[y][x] = g[x][y] = getmin(dis, g[x][y]); > } > for(i = 2; i <= n; i++) > lowcost[i] = g[1][i]; > visited[1] = 1; > for(j = 2; j <= n; j++){ > min = MAX; > for(i = 1; i <= n; i++){ > if(!visited[i] && lowcost[i] < min){ > min = lowcost[i]; > k = i; > } > } > ans += min; > visited[k] = 1; > for(i = 1; i <= n; i++){ > if(!visited[i] && lowcost[i] > g[k][i]) > lowcost[i] = g[k][i]; > } > } > printf("%d\n", ans); > } > return 0; > } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator