Submission #34135

#TimeUsernameProblemLanguageResultExecution timeMemory
34135bnahmad15Simurgh (IOI17_simurgh)C++14
13 / 100
13 ms2048 KiB
#include "simurgh.h" #include <bits/stdc++.h> #define forn(i,n) for (int i = 0;i<int(n);i++) #define ff first #define ss second using namespace std; typedef pair<int,int> pii; typedef pair<int,pii> ppi; int n,m; bool flag = false; vector <int> adj[1000],ans,u,v; bool vis[10]={false}; int check(int idx){ vis[idx]=true; int tmp = 0; forn(i,adj[idx].size()){ int to = adj[idx][i]; if (vis[to]) continue; tmp += check(to) + 1; } return tmp; } vector<int> vec(int ar){ vector<int> res; forn(i,32){ if ((1<<i)&ar) res.push_back(i); } return res; } void _try(int idx,int num,int sor){ if (num == n-1){ fill(vis,vis+10,false); if (check(0)==n-1){ if (count_common_roads(vec(sor)) == n-1){ ans = vec(sor); flag = true; } } return; } if (idx == m) return; adj[u[idx]].push_back(v[idx]); adj[v[idx]].push_back(u[idx]); _try(idx+1,num+1,sor | (1<<idx)); adj[u[idx]].pop_back(); adj[v[idx]].pop_back(); if (flag) return; _try(idx+1,num,sor); } std::vector<int> find_roads(int N, std::vector<int> U, std::vector<int> V) { n = N; u=U,v=V; m=u.size(); _try(0,0,0); return ans; }
#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...