hdu

来源:互联网 发布:如何看待网络成瘾 编辑:程序博客网 时间:2024/04/28 16:45

OJ

#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <vector>#include <map>#include <set>#include <string>#include <cstring>#include <list>#include <queue>#include <stack>#include <cmath>using namespace std;#define PF(x) (scanf("%d",&x))#define PT(x,y) (scanf("%d%d",&x,&y))#define PR(x) (printf("%d\n",x))#define PRT(x,y)(printf("%d %d\n",x,y))#define PB(x)(scanf("%I64d",&x))#define PRB(x)(printf("%I64d\n",(x)))#define N 100005#define M 105#define Mod 1000#define Inf 0x7fffffffint n,m,k;int maps[M][M];int dist[M];int vis[M];int sum = 0;void reinit(){sum = 0;memset(vis,0,sizeof(vis));    memset(maps,0,sizeof(maps));memset(dist,0,sizeof(dist));}int minx(int a,int b){if(a==0) return b;return a>b?b:a;}int prim(int v){int maxx =Inf ;int index = -1;int cur = v;vis[v] = 1;for(int i=1;i<n;i++){for(int j=1;j<=n;j++){if(maps[cur][j])dist[j] = minx(dist[j],maps[cur][j]);}maxx = Inf;index = -1;for(int j=1;j<=n;j++)if(!vis[j] && maxx>dist[j]){maxx = dist[j];index = j;}vis[index]=1;cur = index;sum += maxx;}return sum;}void init(){while(scanf("%d",&n) && n){reinit();int num = n*(n-1)/2;for(int i=0;i<num;i++){int x,y,c;PT(x,y);PF(c);maps[x][y]=maps[y][x] = c;}if(n==1) {puts("0");continue;}PR(prim(1));}return ;}int main(){init();return 0;}


原创粉丝点击