Submission #394889

#TimeUsernameProblemLanguageResultExecution timeMemory
394889SugardorjSwapping Cities (APIO20_swap)C++14
0 / 100
2086 ms6252 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...