| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 343506 | blue | 자매 도시 (APIO20_swap) | C++11 | 0 ms | 0 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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]))
}
}
}
}
