1 条题解
-
0
C :
#include<stdio.h> #include<stdlib.h> #include<string.h> int g[305][305]; int minn[305]; int start[305]; int u[305]; int n,e,total; void prim(){ int i,j,k; memset(minn,0x7f,sizeof(minn)); minn[1] = 0; start[1]=0; memset(u,1,sizeof(u)); for (i = 1; i <= n; i++) { k = 0; for (j = 1; j <= n; j++) if (u[j] && (minn[j] < minn[k])) k = j; u[k] = 0; total=total+minn[k]; for (j = 1; j <= n; j++) if (u[j] &&(g[k][j]!=0) && (g[k][j] < minn[j])) { minn[j] = g[k][j]; start[j]=k; } } } int main(){ int i,j,w,t=0; scanf("%d%d",&n,&e); while (e>0) { scanf("%d%d%d",&i,&j,&w); g[i][j]=g[j][i]=w; e--; } prim(); for (i = 1; i <= n; i++){ if (minn[i]>t) t=minn[i]; } printf("%d %d\n",n-1,t); return 0; }
- 1
信息
- ID
- 3542
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者