Submission #1208493

#TimeUsernameProblemLanguageResultExecution timeMemory
1208493Hanksburger장난감 기차 (IOI17_train)C++17
100 / 100
1111 ms1580 KiB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> adj[5005], rev[5005];
vector<int> who_wins(vector<int> a, vector<int> r, vector<int> U, vector<int> V)
{
	int n=a.size();
	for (int i=0; i<U.size(); i++)
	{
		adj[U[i]].push_back(V[i]);
		rev[V[i]].push_back(U[i]);
	}
	vector<int> pre(n, 0);
	for (int j=0; j<n; j++)
	{
		vector<int> cnt(n, 0), ans(n, 0);
		queue<int> q;
		for (int i=0; i<n; i++)
		{
			if (!r[i])
				continue;
			if (!j)
				ans[i]=1;
			else
			{
				ans[i]=1-a[i];
				for (int v:adj[i])
					if (a[i]^pre[v]^1)
						ans[i]=a[i];
			}
			if (ans[i])
				q.push(i);
		}
		while (!q.empty())
		{
			int u=q.front();
			q.pop();
			for (int v:rev[u])
			{
				if (ans[v])
					continue;
				if (a[v] || ++cnt[v]==adj[v].size())
				{
					ans[v]=1;
					q.push(v);
				}
			}
		}
		if (j==n-1)
			return ans;
		for (int i=0; i<n; i++)
			pre[i]=ans[i];
	}
}

Compilation message (stderr)

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:54:1: warning: control reaches end of non-void function [-Wreturn-type]
   54 | }
      | ^
#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...