#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,i,j,Min,minj,tot; int a[105][105],s[105]; bool b[105]; int main() { scanf("%d",&n); for (i=1;i<=n;++i) for (j=1;j<=n;++j) scanf("%d",&a[i][j]); for (i=1;i<=n;++i) s[i]=0x7777777; s[1]=0; for (i=1;i<=n-1;++i) { Min=0x7777777; for (j=1;j<=n;++j) if (!b[j]&&s[j]<Min) { Min=s[j]; minj=j; } b[minj]=true; for (j=1;j<=n;++j) if (!b[j]&&a[minj][j]<s[j]) s[j]=a[minj][j]; } for (i=1;i<=n;++i) tot+=s[i]; printf("%d",tot); return 0; }
#include<iostream> #include<cstdio> #include<cstring> using namespace std; int n,i,j,Min,minj,tot; int a[105][105],s[105],pre[105]; bool b[105]; void print(int x) { if (pre[x]==0) { printf("%d\n",x); return; } print(pre[x]); printf("%d\n",x); return; } int main() { scanf("%d",&n); for (i=1;i<=n;++i) for (j=1;j<=n;++j) scanf("%d",&a[i][j]); for (i=1;i<=n;++i) s[i]=0x7777777; s[1]=0; for (i=1;i<=n-1;++i) { Min=0x7777777; for (j=1;j<=n;++j) if (!b[j]&&s[j]<Min) { Min=s[j]; minj=j; } b[minj]=true; for (j=1;j<=n;++j) if (!b[j]&&a[minj][j]<s[j]) { s[j]=a[minj][j]; pre[j]=minj; } } for (i=1;i<=n;++i) tot+=s[i]; printf("%d\n",tot); print(n); return 0; }
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; struct hp{ int x,y,s; }a[10005]; int n,i,j,dis,num,tot,k; int father[10005]; int cmp(hp a,hp b) { return a.s<b.s; } int find(int x) { if (x==father[x]) return father[x]; father[x]=find(father[x]); return father[x]; } void merge(int x,int y) { int f1=find(x); int f2=find(y); father[f1]=f2; return; } int main() { scanf("%d",&n); for (i=1;i<=n;++i) for (j=1;j<=n;++j) { scanf("%d",&dis); if (dis!=0) { num++; a[num].x=i; a[num].y=j; a[num].s=dis; } } for (i=1;i<=n;++i) father[i]=i; sort(a+1,a+num+1,cmp); for (i=1;i<=num;++i) { if (find(a[i].x)!=find(a[i].y)) { merge(a[i].x,a[i].y); tot+=a[i].s; k++; } if (k==n-1) break; } printf("%d",tot); return 0; }
第一行:
|
农场的个数,N(3<=N<=100)。
|
第二行..结尾
|
后来的行包含了一个N*N的矩阵,表示每个农场之间的距离。理论上,他们是N行,每行由N个用空格分隔的数组成,实际上,他们限制在80个字符,因此,某些行会紧接着另一些行。当然,对角线将会是0,因为不会有线路从第i个农场到它本身。
|