250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 백준#BOJ#14501#퇴사#브루트포스
- 백준#BOJ#8012#한동이는영업사원
- 백준#BOJ#2615#오목
- 백준#BOJ#12865#평범한배낭
- 백준#boj#12755
- 백준#BOJ#1939#중량제한
- 백준#boj#16932#모양만들기
Archives
- Today
- Total
순간을 성실히, 화려함보단 꾸준함을
[boj : 1833] 고속철도 설계하기 본문
문제 : 이미 설치되어 있는 철도가 있고 새로 지어야 되는 철도가 주어진다. 이때 (이미 지어진 철도의 가중치) + (새로 지어야 되는 철도의 가중치)의 최소값을 구해라
해설 : 입력값이 음수로 들어오면 이미 연결되어있으니깐 정답에 더해주고 부모들을 합쳐준다. 나머지는 그냥 평범한 mst 문제
#include<bits/stdc++.h>
using namespace std;
struct info {
int x, y, w;
bool operator<(const info& cur) const {
return w < cur.w;
}
};
int n;
int graph[210][210];
int parent[201];
vector<info> v;
bool check_parent(int x, int y);
void union_parent(int x, int y);
int get_parent(int x);
int main()
{
int ans = 0;
cin >> n;
for (int i = 1; i <= n; i++)parent[i] = i;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= n; j++)
cin >> graph[i][j];
for(int i=1;i<=n;i++)
for (int j = i; j <= n; j++) {
if (graph[i][j] < 0) {
union_parent(i, j);
ans += abs(graph[i][j]);
}
else if (graph[i][j] > 0)
v.push_back({ i,j,graph[i][j] });
}
sort(v.begin(), v.end());
vector<pair<int, int>> edge;
for (int i = 0; i < v.size(); i++) {
int x = v[i].x;
int y = v[i].y;
if (!check_parent(x, y)) {
union_parent(x, y);
ans += v[i].w;
edge.push_back({ x,y });
}
}
cout << ans<<" "<<edge.size()<<"\n";
for (auto u : edge)
cout << u.first << " " << u.second << "\n";
return 0;
}
bool check_parent(int x, int y)
{
x = get_parent(x);
y = get_parent(y);
if (x == y)return true;
return false;
}
void union_parent(int x, int y)
{
x = get_parent(x);
y = get_parent(y);
parent[y] = x;
}
int get_parent(int x)
{
if (x == parent[x])return x;
return parent[x] = get_parent(parent[x]);
}
'알고리즘,SQL > 백준,BOJ' 카테고리의 다른 글
[boj : 13273] 로마숫자 (0) | 2020.12.23 |
---|---|
[boj : 4803] 트리 (0) | 2020.12.22 |
[boj : 12739] 돌림판(small) (0) | 2020.12.22 |
[boj : 7682] 틱택토 (0) | 2020.12.20 |
[boj : 2758] 로또 (0) | 2020.12.18 |