79. 원더랜드 (prim MST)

강지훈·2021년 12월 15일

#include
#include
#include
#include
using namespace std;

int ch[30]; // 체크해주는 배열
struct Edge{
int e;
int val;
Edge(int a,int b){
e=a;
val=b;
}
bool operator<(const Edge &b)const {
return val>b.val; //최소 힙
}
};
int main() {
priority_queue Q;
vector<pair<int, int> > map[30];
int i,n,m,a,b,c,res=0;
cin>>n>>m;

for(i=1;i<=m;i++){
	cin>>a>>b>>c;
	map[a].push_back(make_pair(b,c));
	map[b].push_back(make_pair(a,c)); //무방향 그래프 
}

Q.push(Edge(1,0));
while(!Q.empty()){
	Edge tmp= Q.top();
	Q.pop();
	int v=tmp.e;
	int cost=tmp.val;
	if(ch[v]==0) {
		res+=cost;
		ch[v]=1;
		for(i=0;i<map[v].size();i++){
			if(ch[map[v][i].first]==0){
				Q.push(Edge(map[v][i].first, map[v][i].second));
			}
		}
	}
}
cout<<res;

}

profile
never stop

0개의 댓글