# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1045385 | beaconmc | Simurgh (IOI17_simurgh) | C++14 | 58 ms | 4144 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>
typedef int ll;
#define FOR(i,x,y) for(ll i=x; i<y; i++)
#define FORNEG(i,x,y) for(ll i=x; i>y; i--)
using namespace std;
bool visited[1000];
vector<array<ll,2>> edges[1000];
ll N;
vector<ll> ans;
void dfs(ll a, ll p){
for (auto&i : edges[a]){
if (i[0] != p && visited[i[0]] == 0){
visited[i[0]] = 1;
ans.push_back(i[1]);
dfs(i[0], p);
}
}
}
vector<int> find_roads(int n, vector<int> u, vector<int> v) {
FOR(i,0,u.size()){
edges[u[i]].push_back({v[i],i});
edges[v[i]].push_back({u[i],i});
}
set<ll> realans;
FOR(i,0,n){
FOR(p,0,1000) visited[p] = 0;
ans.clear();
if (i==0) visited[1]=1,dfs(1,i);
else visited[0]=1,dfs(0,i);
if (ans.size() == n-2){
vector<array<ll,2>> idk;
for (auto&j : edges[i]){
ans.push_back(j[1]);
ll sus = count_common_roads(ans);
idk.push_back({sus, j[1]});
ans.pop_back();
}
sort(idk.begin(), idk.end());
for (auto&i : idk) if (i[0] == idk[idk.size()-1][0]) realans.insert(i[1]);
}
}
vector<ll> temp;
for (auto&i : realans) temp.push_back(i);
return temp;
}
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... |