이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "swap.h"
#include <bits/stdc++.h>
using namespace std;
int i,j,s,t;
int link[261523],size[234567],a[234567],l=12345678,r,tt,k,y,z,n,m,x;
pair<int,pair<int,int>>p[234567];
bool c[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) {
if(x==link[x])return x;
else return link[x]=find(link[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]++;
t=0;
if (a[x]>2||a[y]>2){
t=1;
}
x=find(x);
y=find(y);
if (x==y)
c[x]=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... |