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 <bits/stdc++.h>
using namespace std;
int i,j,s,t;
int link[261523],size[234567],c[234567],a[234567],l=12345678,r,tt,k,y,z,n,m,x;
pair<int,pair<int,int>>p[234567];
void init(int N, int M, vector <int> U, vector <int> V, vector <int> W) {
n = N;
m = M;
for (i = 0; i <m; i ++){
p[i].first=W[i];
p[i].second.first=U[i];
p[i].second.second=V[i];
}
sort (p,p+m);
}
int find(int x) {
while (x != link[x])
x = link[x];
return x;
}
bool same(int x, int y) {
return find(x) == find(y);
}
void unite(int x, int y) {
x = find(x);
y = find(y);
if (size[x] < size[y])
swap(x,y);
size[x] += size[y];
if (c[y]==1)
c[x]=1;
link[y] = x;
}
int getMinimumFuelCapacity(int u, int v) {
for (i = 0; i<n; i ++){
link[i]=i;
size[i]=1;
c[i]=0;
a[i]=0;
}
for (i = 0; i <m; i ++){
x=p[i].second.first;
y=p[i].second.second;
a[x]++;
a[y]++;
if (find(x)==find(y)||a[x]>2||a[y]>2){
c[find(x)]=1;
c[find(y)]=1;
}
unite(x,y);
if (find(u)==find(v)&&c[find(u)]==1){
return p[i].first;
}
}
return -1;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |