| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 343506 | blue | 자매 도시 (APIO20_swap) | C++11 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "swap.h"
#include <vector>
#include <algorithm>
using namespace std;
int res = 0;
bool cycle = 0;
int n, m;
vector<int> u, v, w;
vector<int> edges;
vector<int> E[100001];
bool edgesort(int A, int B)
{
return w[A] < w[B];
}
void init(int N, int M, vector<int> U, vector<int> V, vector<int> W) {
n = N; //cities
m = M; //roads
u = U;
v = V;
w = W;
for(int i = 0; i < m; i++) edges.push_back(i);
sort(edges.begin(), edges.end(), edgesort);
for(int i = 0; i < m; i++)
{
E[ u[edges[i]] ].push_back(edges[i]);
E[ v[edges[i]] ].push_back(edges[i]);
}
}
int getMinimumFuelCapacity(int X, int Y)
{
vector<int> color_index(n);
for(int i = 0; i < n; i++) color[i] = i;
vector<int> color_set[n];
for(int i = 0; i < n; i++) color_set[i].push_back(i);
vector<bool> loop(n, 0);
int c1, c2;
for(int e: edges)
{
c1 = color_index[ u[e] ];
c2 = color_index[ v[e] ];
if(c1 == c2) loop[c1] = 1;
else
{
if(c1 < c2)
{
swap(u[e], v[e]);
swap(c1, c2);
for(int h: color_set[c2])
{
color_index[h] = c1;
color_set[c1].push_back(h);
}
color_set[c2].clear();
if((c1 == color_index[X] && c2 == color_index[Y]) || (c1 == color_index[Y] && c2 = color_index[X]))
}
}
}
}
