Submission #115480

#TimeUsernameProblemLanguageResultExecution timeMemory
115480youngyojunSleepy game (innopolis2018_final_D)C++11
100 / 100
99 ms21496 KiB
#include <bits/stdc++.h>
#define eb emplace_back
using namespace std;

const int MAXN = 100055;

vector<int> G[MAXN];

int A[MAXN*2];
bitset<MAXN*2> chk, isd;

int N, M;

void f(int i) {
	chk[i] = true;
	if(G[i>>1].empty() && (i&1)) {
		vector<int> V;
		for(int v = i; v;) {
			V.eb(v);
			v = A[v];
		}
		reverse(V.begin(), V.end());
		puts("Win");
		for(int v : V) printf("%d ", v >> 1);
		puts("");
		exit(0);
	}
	i ^= 1;
	for(int v : G[i>>1]) {
		v <<= 1; v |= i & 1;
		if(chk[v]) continue;
		A[v] = i ^ 1;
		f(v);
	}
}

void g(int i) {
	chk[i] = true;
	for(int v : G[i]) {
		if(chk[v]) {
			if(isd[v]) continue;
			puts("Draw");
			exit(0);
		}
		g(v);
	}
	isd[i] = true;
}

int main() {
	ios::sync_with_stdio(false);

	cin >> N >> M;
	for(int i = 1; i <= N; i++) {
		cin >> M;
		for(int v; M--;) {
			cin >> v;
			G[i].eb(v);
		}
	}

	cin >> M;
	f(M << 1);
	chk.reset();
	g(M);
	
	puts("Lose");
	return 0;
}
#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...