HDU 1102

来源:互联网 发布:rayfile软件下载 编辑:程序博客网 时间:2024/05/21 07:57
#include<stdio.h>#include<stdlib.h>#include<string.h>const int max=0x7ffffff;int map[101][101],min,v[101],n,x,y,sum,flag;void Reset(int n){int i,j,m;memset(map,0,sizeof(map));for(i=0;i<n;i++){for(j=0;j<n;j++){scanf("%d",&map[i][j]);if(i==j) map[i][j]=0;}}scanf("%d",&m);for(i=0;i<m;i++){scanf("%d%d",&x,&y);map[x-1][y-1]=map[y-1][x-1]=0;}}int minTree(int n){int i,j;memset(v,0,sizeof(v));v[0]=1;sum=0;for(i=1;i<n;i++){min=max;for(j=0;j<n;j++){if(!v[j]&&map[0][j]<min){min=map[0][j];flag=j;}}sum+=min;v[flag]=1;for(j=0;j<n;j++){if(!v[j]&&map[0][j]>map[flag][j]){map[0][j]=map[flag][j];}}}return sum;}int main(){while(scanf("%d",&n)!=EOF){Reset(n);printf("%d\n",minTree(n));}return 0;}

原创粉丝点击