Submission #1338359

#TimeUsernameProblemLanguageResultExecution timeMemory
1338359settopToy Train (IOI17_train)C++20
11 / 100
539 ms1188 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];
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]){
				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);

	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);
	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...