3362=数据结构实验之图论六:村村通公路
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 #define INF 99999999 5 int map[1000][1000],dis[1000],visited[10000]; 6 int sum; 7 void prim(int n) 8 { 9 int count=1,i,j,k; 10 while(count<=n) 11 { 12 count++; 13 int min=INF; 14 for(i=1; i<=n; i++) 15 { 16 if(visited[i]==0&&dis[i]<min) 17 { 18 min=dis[i]; 19 j=i; 20 } 21 } 22 if(min==INF) 23 { 24 sum=-1; 25 return; 26 } 27 visited[j]=1; 28 sum+=dis[j]; 29 for(k=1; k<=n; k++) 30 { 31 if(visited[k]==0&&dis[k]>map[j][k]) 32 dis[k]=map[j][k]; 33 } 34 } 35 36 } 37 int main() 38 { 39 int n,m; 40 while(~scanf("%d%d",&n,&m)) 41 { 42 int i,j; 43 sum=0; 44 memset(visited,0,sizeof(visited)); 45 for(i=1; i<=n; i++) 46 { 47 for(j=1; j<=n; j++) 48 { 49 if(i==j) 50 map[i][j]=0; 51 else 52 map[i][j]=INF; 53 } 54 } 55 while(m--) 56 { 57 int a,b,c; 58 scanf("%d%d%d",&a,&b,&c); 59 map[a][b]=map[b][a]=c; 60 } 61 for(i=1; i<=n; i++) 62 { 63 dis[i]=map[1][i]; 64 } 65 prim(n); 66 printf("%d\n",sum); 67 } 68 return 0; 69 }
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步