제출 #429924

#제출 시각아이디문제언어결과실행 시간메모리
429924AmineWeslatiSimurgh (IOI17_simurgh)C++14
13 / 100
697 ms460 KiB
#include "simurgh.h"
#include <bits/stdc++.h>
using namespace std; 

typedef long long ll;
typedef vector<int>vi; 
#define pb push_back
#define sz(x) (int)x.size()
#define all(x) begin(x),end(x)

#define FOR(i,a,b) for(int i=a; i<b; i++)

//--------------------------------

const int MX=100;
int N; 
vi adj[MX];

vi vis(MX);
void dfs(int u){
	vis[u]=1;
	for(int v: adj[u]) if(!vis[v]) dfs(v);
}
bool check(){
	FOR(i,0,N) vis[i]=0;
	dfs(0);
	FOR(i,0,N) if(!vis[i]) return 0;
	return 1;
}

vi find_roads(int N, vi U, vi V) {
	int M=sz(U);
	::N=N; 
	FOR(m,1,1<<M){
		FOR(i,0,N) adj[i].clear();

		vi vec;
		FOR(i,0,M) if((m>>i)&1){
			int u=U[i],v=V[i];
			adj[u].pb(v);
			adj[v].pb(u);
			vec.pb(i);
		}
		if(sz(vec)==N-1 && check() && count_common_roads(vec)==N-1){
			return vec; 
		}
	}
	assert(0);
}

/*

4 6
0 1
0 2
0 3
1 2
1 3
2 3
0 1 5

*/
#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...