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... |