# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
103480 | figter001 | Simurgh (IOI17_simurgh) | C++17 | 2 ms | 384 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"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const int nax = 510;
int dsu[nax],in[nax];
int m,n;
vector<pair<int,int>> g[nax];
vector<int> u,v;
int find(int u){
return u == dsu[u] ? u : dsu[u] = find(dsu[u]);
}
bool good(vector<int> ans){
for(int i=0;i<n;i++)
dsu[i] = i;
for(int i=0;i<ans.size();i++){
int id = ans[i];
int a = u[id];
int b = v[id];
if(find(a) == find(b))
continue;
dsu[find(b)] = find(a);
}
for(int i=0;i<n;i++)
if(find(i) != find(0))
return 0;
return 1;
}
vector<int> find_roads(int N, vector<int> U, vector<int> V) {
vector<int> ans;
u = U;
v = V;
n = N;
m = u.size();
for(int i=0;i<n;i++)
dsu[i] = i;
int lst;
for(int i=0;i<m;i++){
int a = u[i];
int b = v[i];
g[a].push_back({b,i});
g[b].push_back({a,i});
if(find(a) == find(b))
continue;
in[a]++;
in[b]++;
ans.push_back(i);
dsu[find(b)] = find(a);
}
lst = count_common_roads(ans);
for(int i=0;i<ans.size();i++){
int id = ans[i];
int a = u[id];
int b = v[id];
for(int j=0;j<m;j++){
ans[i] = j;
in[a]--;
in[b]--;
in[u[j]]++;
in[v[j]]++;
if(in[a] > 0 && in[b] > 0){
int r = count_common_roads(ans);
if(r < lst){
ans[i] = id;
break;
}
if(r > lst){
lst = r;
break;
}
}
in[a]++;
in[b]++;
in[u[j]]--;
in[v[j]]--;
ans[i] = id;
}
}
// for(int i : ans)
// printf("%d ", i);
// printf("\n");
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... |