Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
983 B
2
Indexable
Never
#include<iostream>
using namespace std;
int mang[101][101],key[101],parent[101], visited[101];
int n,ans;

int minKey(){
	int min=1000000;
	int index=0;
	for(int i=0; i<n; i++){
		if(key[i]<min && visited[i]==0){
			min=key[i];
			index=i;
		}
	}
	return index;
}

void prim(int start){
	for(int i=0; i<n; i++){
		key[i]=1000000;
		parent[i]=-1;
		visited[i]=0;
	}
	key[start]=0;
	for(int i=0; i<n; i++){
		int u = minKey();
		visited[u]=1;
		for(int j=0; j<n; j++){
			if(mang[u][j]!=0 && visited[j]==0){
				if(mang[u][j]<key[j]){
					key[j]=mang[u][j];
					parent[j]=u;
				}
			}
		}
	}
}

int main(){
	freopen("Text.txt", "r", stdin);
	int t;
	cin >> t;
	for(int tc=1; tc<=t; tc++){
		cin >> n;
		for(int i=0; i<n; i++){
			for(int j=0; j<n; j++){
				cin >> mang[i][j];
			}
		}
		prim(0);
		ans=0;
		for(int i=0; i<n; i++){
			ans+=key[i];
		}
		cout << "Case #" << tc << endl;
		cout << ans << endl;
	}
	return 0;
}
Leave a Comment