#include<cstdio> #include<cstring> using namespace std; const int N=1000; const int INF=0x7fffffff; int g[N][N],n,m,minEdge[N],mini[N],ans=0; void (){ for(int i=1;i<=n;i++) {minEdge[i]=g[1][i];mini[i]=1;} minEdge[1]=0; int min,x; for(int i=1;i<n;i++){ min=INF; for(int j=1;j<=n;j++) if(minEdge[j]!=0&&minEdge[j]<min) min=minEdge[j],x=j,cout<<mini[j]<<' '<<j<<endl; ans+=min; minEdge[x]=0; for(int j=1;j<=n;j++) if(minEdge[j]!=0&&minEdge[j]>g[x][j]) {minEdge[j]=g[x][j];mini[j]=x;} } cout<<ans<<endl; } int main(){ memset(g,0x7f,sizeof(g)); cin>>n>>m; int x,y,w; for(int i=1;i<=m;i++){ cin>>x>>y>>w; g[x][y]=g[y][x]=w; } prim(); return 0; }
|
近期评论