• hdu1233


    #include<stdio.h>
    #include<string.h>
    #define N 100+5
    #define MAX 9999
    int map[N][N];
    int d[N];
    int n,ans;
    
    
    void prim(){
    	int i,j,k,min;
    	for(i=1;i<=n;i++)
    		d[i]=map[1][i];
    	ans+=d[1];
    	d[1]=0;//进入最小生成树
    	for(i=1;i<=n;i++){
    		min=MAX;
    		for(j=1;j<=n;j++){
    			if(min>d[j]&&d[j]!=0){
    				k=j;
    				min=d[j];
    			}
    		}
    		ans+=d[k];
    		d[k]=0;//进入最小生成树
    		for(j=1;j<=n;j++){
    			if(d[j]>map[k][j]&&d[j]!=0){
    				d[j]=map[k][j];
    			}
    		}
    	}
    	return ;
    }
    
    int main(){
    	int i,j,t;
    	int t1,t2,val;
    	while(scanf("%d",&n)==1,n){
    		t=n*(n-1)/2;
    		memset(map,MAX,sizeof(map));
    		memset(d,MAX,sizeof(d));
    		for(i=1;i<=n;i++)map[i][i]=0;
    
    		for(i=0;i<t;i++){
    			scanf("%d%d%d",&t1,&t2,&val);
    			if(map[t1][t2]>val)
    				map[t1][t2]=map[t2][t1]=val;
    		}
    		
    		ans=0;
    		prim();
    		printf("%d\n",ans);
    	}
    	return 0;
    }
    

      简单的prim

    我都能一遍AC 。。。oh yeah!

    keep moving...
  • 相关阅读:
    CSS 选择器
    CSS 用法和特性
    Objective-C 事件响应链
    苹果签名机制
    欧几里得算法
    扩展欧几里得算法
    RSA算法
    动态库加载和代码签名
    __attribute__
    信息熵
  • 原文地址:https://www.cnblogs.com/xxx0624/p/2602381.html
Copyright © 2020-2023  润新知