답안 #778490

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
778490 2023-07-10T11:10:47 Z I_Love_EliskaM_ 장난감 기차 (IOI17_train) C++14
16 / 100
827 ms 2004 KB
#include "train.h"
#include <bits/stdc++.h>
using namespace std;
#define forn(i,n) for(int i=0;i<n;++i)
#define pb push_back
#define ll long long

vector<int> p1(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> s(n);
	vector<int> f(n);
	vector<int> ans(n);
	forn(i,m) if (u[i]==v[i]) s[u[i]]=1;
	forn(i,m) if (u[i]!=v[i]) f[u[i]]=1;
	int now=0;
	for (int i=n-1; i>=0; --i) {
		if (s[i]) {
			if (now) {
				if (!a[i]) {
					if (!r[i]) now=0;
				} else {
					if (f[i]) now=1;
					else now = r[i];
				}
			} else {
				if (a[i]) {
					if (r[i]) now=1;
				} else {
					if (f[i]) now=0;
					else now = r[i];
				}
			}
		}
		ans[i]=now;
	}
	return ans;
}

const int N=5555;
vector<int> adj[N];
int vis[N];
int ok[N];
int dfs(int u, int s) {
	if (vis[u] && u==s) return 1;
	if (vis[u]) return 0;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) z|=dfs(v,s);
	return z;
}
int dfs2(int u) {
	if (ok[u]) return 1;
	if (vis[u]) return 0;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) z|=dfs2(v);
	return z;
}
vector<int> p3(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> ans(n);
	forn(i,m) adj[u[i]].pb(v[i]);
	forn(i,n) if (r[i]) {
		forn(j,n) vis[j]=0;
		int q=dfs(i,i);
		ok[i]=q;
	}
	forn(i,n) {
		forn(j,n) vis[j]=0;
		int q=dfs2(i);
		ans[i]=q;
	}
	return ans;
}

int no[N];
int dfs(int u) {
	if (vis[u]) return 1;
	vis[u]=1;
	int z=0;
	for(auto&v:adj[u]) if (no[v]) continue; else z|=dfs(v);
}
vector<int> p4(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {
	int n=a.size(), m=u.size();
	vector<int> ans;
	forn(i,m) adj[u[i]].pb(v[i]);
	forn(i,n) no[i]=r[i];
	forn(i,n) {
		forn(i,n) vis[i]=0;
		ans[i]=dfs(i);
	}
	return ans;
}

vector<int> who_wins(vector<int>a,vector<int>r,vector<int>u,vector<int>v) {

	int n=a.size(), m=u.size();
	int z=1;
	forn(i,m) z&=(u[i]==v[i]) || (v[i]==(u[i]+1));
	if (z) {
		return p1(a,r,u,v);
	}
	z=1;
	forn(i,n) z&=a[i];
	if (z) return p3(a,r,u,v);
	forn(i,n) z|=a[i];
	if (!z) return p4(a,r,u,v);
	exit(1);

}

Compilation message

train.cpp: In function 'int dfs(int)':
train.cpp:82:1: warning: control reaches end of non-void function [-Wreturn-type]
   82 | }
      | ^
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 724 KB Output is correct
2 Correct 2 ms 724 KB Output is correct
3 Correct 2 ms 724 KB Output is correct
4 Correct 3 ms 724 KB Output is correct
5 Correct 2 ms 724 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 2 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 ms 724 KB Output is correct
11 Correct 2 ms 724 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 1 ms 340 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 122 ms 1528 KB Output is correct
2 Correct 119 ms 1480 KB Output is correct
3 Correct 137 ms 1444 KB Output is correct
4 Correct 687 ms 1404 KB Output is correct
5 Correct 557 ms 1380 KB Output is correct
6 Correct 461 ms 1424 KB Output is correct
7 Correct 209 ms 1276 KB Output is correct
8 Correct 187 ms 1236 KB Output is correct
9 Correct 172 ms 1256 KB Output is correct
10 Correct 260 ms 1260 KB Output is correct
11 Correct 208 ms 1204 KB Output is correct
12 Correct 19 ms 1108 KB Output is correct
13 Correct 773 ms 1420 KB Output is correct
14 Correct 753 ms 1424 KB Output is correct
15 Correct 827 ms 1364 KB Output is correct
16 Correct 755 ms 1364 KB Output is correct
17 Correct 718 ms 1404 KB Output is correct
18 Correct 251 ms 1108 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Runtime error 5 ms 2004 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 4 ms 724 KB Execution failed because the return code was nonzero
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 724 KB Output is correct
2 Correct 2 ms 724 KB Output is correct
3 Correct 2 ms 724 KB Output is correct
4 Correct 3 ms 724 KB Output is correct
5 Correct 2 ms 724 KB Output is correct
6 Correct 2 ms 724 KB Output is correct
7 Correct 2 ms 724 KB Output is correct
8 Correct 2 ms 724 KB Output is correct
9 Correct 2 ms 724 KB Output is correct
10 Correct 2 ms 724 KB Output is correct
11 Correct 2 ms 724 KB Output is correct
12 Runtime error 1 ms 340 KB Execution failed because the return code was nonzero
13 Halted 0 ms 0 KB -