# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
283867 | hank55663 | Simurgh (IOI17_simurgh) | C++14 | 308 ms | 2296 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 "simurgh.h"
#define x first
#define y second
#define pb push_back
#include<bits/stdc++.h>
using namespace std;
int f[505];
int Find(int x){
if(f[x]==x)return x;
return f[x]=Find(f[x]);
}
int check[250500];
int ok[250500];
std::vector<int> find_roads(int n, std::vector<int> u, std::vector<int> v) {
vector<int> ans;
int m=u.size();
for(int i = 0;i<n;i++){
for(int j=0;j<n;j++)f[j]=j;
vector<int> road;
vector<int> road2;
vector<int> candidate;
for(int j = 0;j<m;j++){
if(u[j]!=i&&v[j]!=i){
if(Find(u[j])!=Find(v[j])){
road.pb(j);
f[Find(u[j])]=Find(v[j]);
}
}
else{
candidate.pb(j);
//printf("%d %d\n",i,j);
}
}
map<int,vector<int> > m;
for(auto it:candidate){
if(u[it]==i){
m[Find(v[it])].pb(it);
}
else{
m[Find(u[it])].pb(it);
}
}
vector<pair<int,vector<int> > > v;
for(auto it:m){
v.pb(it);
road2.pb(it.y[0]);
}
for(auto it:road){
road2.pb(it);
}
swap(road,road2);
for(int i = 0;i<v.size();i++){
int x=-1;
for(auto it:v[i].y){
if(check[it]){
x=it;
break;
}
}
if(x!=-1)
road[i]=x;
}
int x=count_common_roads(road);
// printf("!\n");
for(int j = 0;j<v.size();j++){
int need=x;
int now=road[j];
vector<int> res;
if(check[now]&&!ok[now])need++;
for(auto it:v[j].y){
if(!check[it]){
road[j]=it;
int y=count_common_roads(road);
// printf("! %d\n",it);
if(y>need){
res.clear();
need=y;
}
if(y==need){
res.push_back(it);
}
}
}
for(auto it:res)check[it]=1,ok[it]=1,ans.pb(it);//printf("%d\n",it);
for(auto it:v[j].y){
if(!check[it]){
check[it]=1;
ok[it]=0;
}
}
road[j]=now;
// printf("%d end\n",i);
}
}
return ans;
}
Compilation message (stderr)
# | 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... |