hdu 1102
#include<iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <list>
#include <vector>
using namespace std;
#define PD(x) (scanf("%d",&x))
#define PP(a,b) (scanf("%d%d",&a,&b))
#define PR(a) (printf("%d
",a))
#define N 105
int map[N][N];
int p;
int n;
int q;
int ar[N];
struct P
{
int dis;
int s,t;
P(int a,int b,int c):s(a),t(b),dis(c){}
};
vector<P> T;
int find(int a,int *s)
{
int temp = a;
while(s[temp]!=temp)
{
temp = s[temp];
}
int c = a;
int r = a;
while(s[c]!=c)
{
r = c;
c = s[c];
s[r] = temp;
}
return temp;
}
void unions(int a,int b,int *s)
{
s[b] = a;
}
bool cmp(P aa,P bb)
{
return aa.dis<bb.dis;
}
void init()
{
while(scanf("%d",&n)!=EOF)
{
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
PD(map[i][j]);
for(int i=0;i<n;i++)
ar[i] = i;
PD(q);
for(int i=0;i<q;i++)
{
int a,b;
PP(a,b);
map[a-1][b-1] = 0;
map[b-1][a-1] = 0;
a = find(a-1,ar);
b = find(b-1,ar);
unions(a,b,ar);
}
if(!T.empty()) T.clear();
for(int i = 0;i<n;i++)
for(int j = 0;j<n;j++)
if(map[i][j])
{
P var(i,j,map[i][j]);
T.push_back(var);
}
int sum = 0 ;
sort(T.begin(),T.end(),cmp);
for(int i=0;i<(int)T.size();i++)
{
int a = find(T[i].s,ar);
int b = find(T[i].t,ar);
if(a!=b)
{
sum += T[i].dis;
unions(a,b,ar);
}
}
PR(sum);
}
}
int main()
{
init();
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.