- #include <iostream>
- #include <cstring>
- const int MAX=101;
- const int INF=100000;
- using namespace std;
- void prim(int matrix[][MAX],int N,int u)
- {
- int i,j,k;
- int min;
- int mincost=0;
- int lowcost[MAX];
- for(i=0;i<N;i++)
- lowcost[i]=matrix[u][i];
- for(i=1;i<N;i++)
- {
- min=INF;
- for(j=0;j<N;j++)
- if(lowcost[j] && lowcost[j]<min)
- {
- min=lowcost[j];
- k=j;
- }
- mincost+=min;
- lowcost[k]=0;
- for(j=0;j<N;j++)
- if(lowcost[j] && lowcost[j]>matrix[k][j])
- lowcost[j]=matrix[k][j];
- }
- printf("%d/n",mincost);
- }
- int main()
- {
- int N;
- int i,j;
- int matrix[MAX][MAX];
- while(cin >> N)
- {
- for(i=0;i<N;i++)
- for(j=0;j<N;j++)
- scanf("%d",&matrix[i][j]);
- prim(matrix,N,0);
- }
- return 0;
- }