Submission #1338360

#TimeUsernameProblemLanguageResultExecution timeMemory
1338360settopToy Train (IOI17_train)C++20
11 / 100
610 ms1200 KiB
#include "train.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define fall(i,a,b) for(int i=a;i<=b;i++)
#define rfall(i,a,b) for(int i=a;i>=b;i--)
#define all(x) x.begin(),x.end()
#define F first
#define S second
#define sz(x) (int)x.size()
#define pb push_back
const int MAXN=5e3+10;
const ll inf=1e16;
typedef pair<int,int> pii;

int n,m;
vector<int> g[MAXN],charged;
bool z[MAXN],mark[MAXN];

void get(int x){
	fall(i,0,n-1) z[i]=0;
	queue<int> fila; fila.push(x);
	while(!fila.empty()){
		auto a=fila.front(); fila.pop();
		for(auto u:g[a]){
			if(!z[u] && !charged[u]){
				z[u]=1;
				fila.push(u);
			}
		}
	}
	mark[x]=z[x];
}

bool bfs(int x){
	fall(i,0,n-1) z[i]=0;
	queue<int> fila; fila.push(x); z[x]=1;
	while(!fila.empty()){
		auto a=fila.front(); fila.pop();
		if(mark[a]) return true;
		for(auto u:g[a]){
			if(!z[u]){
				z[u]=1;
				fila.push(u);
			}
		}
	}
	return false;
}

std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	n=sz(a),m=sz(u);
	charged=r;

	fall(i,0,m-1) g[u[i]].pb(v[i]);

	vector<int> ans(n);

	fall(i,0,n-1) if(!r[i]) get(i);
	
	fall(i,0,n-1) ans[i]=(bfs(i)^1);
	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...
#Verdict Execution timeMemoryGrader output
Fetching results...