Submission #752290

# Submission time Handle Problem Language Result Execution time Memory
752290 2023-06-02T16:38:17 Z definitelynotmee Toy Train (IOI17_train) C++17
23 / 100
246 ms 1364 KB
#include "train.h"
#include<bits/stdc++.h>
#define all(x) x.begin(), x.end()
#define ff first
#define ss second
using namespace std;
template <typename T>
using bstring = basic_string<T>;
template <typename T>
using matrix = vector<vector<T>>;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
const ll INFL = (1LL<<62)-1;
const int INF = (1<<30)-1;
const double EPS = 1e-7;
const int MOD = 998244353;
const int RANDOM = chrono::high_resolution_clock::now().time_since_epoch().count();
const int MAXN = 1e6+1;

std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v) {
	int n = a.size();

	vector<bstring<int>> g(n), rev(n);

	for(int i = 0; i < u.size(); i++){
		g[u[i]].push_back(v[i]);
		rev[v[i]].push_back(u[i]);
	}

	vector<int> resp(n,1);

	auto topo_sort=[&]{

		vector<int> degree(n);
		vector<int> reach(n);
		vector<int> st;

		for(int i = 0; i < n; i++){
			if(!resp[i])
				continue;

			if(a[i]){
				for(int j : g[i]){
					if(resp[j] && r[j]){
						st.push_back(i);
						degree[i] = -1;
						break;
					}
				}
			} else {
				for(int j : g[i]){
					degree[i]+=!(resp[j] && r[j]);
				}

				if(degree[i] == 0)
					st.push_back(i);
			}
		}

		while(!st.empty()){
			int cur = st.back();
			assert(resp[cur]);
			st.pop_back();
			reach[cur] = 1;

			for(int i : rev[cur]){
				if(!resp[i])
					continue;
				
				degree[i]--;

				if(a[i]){
					if(degree[i] == -1){
						st.push_back(i);
					}
				} else {
					if(degree[i] == 0){
						st.push_back(i);
					}
				}
			}
		}

		bool ret = 0;

		for(int i = 0; i < n; i++){
			ret|=reach[i]^resp[i];
			resp[i]=reach[i];
		}

		return ret;
	};

	while(topo_sort()){}

	return resp;
}

Compilation message

train.cpp: In function 'std::vector<int> who_wins(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
train.cpp:28:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   28 |  for(int i = 0; i < u.size(); i++){
      |                 ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 852 KB 3rd lines differ - on the 22nd token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 212 KB 3rd lines differ - on the 8th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 108 ms 1236 KB Output is correct
2 Correct 173 ms 1236 KB Output is correct
3 Correct 246 ms 1356 KB Output is correct
4 Correct 8 ms 1364 KB Output is correct
5 Correct 11 ms 1256 KB Output is correct
6 Correct 8 ms 1364 KB Output is correct
7 Correct 7 ms 1364 KB Output is correct
8 Correct 7 ms 1236 KB Output is correct
9 Correct 6 ms 1108 KB Output is correct
10 Correct 7 ms 1236 KB Output is correct
11 Correct 6 ms 1236 KB Output is correct
12 Correct 6 ms 1108 KB Output is correct
13 Correct 7 ms 1364 KB Output is correct
14 Correct 6 ms 1364 KB Output is correct
15 Correct 7 ms 1364 KB Output is correct
16 Correct 8 ms 1364 KB Output is correct
17 Correct 8 ms 1364 KB Output is correct
18 Correct 204 ms 956 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 5 ms 1108 KB 3rd lines differ - on the 696th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 8 ms 1236 KB Output is correct
2 Correct 9 ms 1364 KB Output is correct
3 Correct 8 ms 1236 KB Output is correct
4 Correct 7 ms 1236 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 4 ms 768 KB Output is correct
7 Correct 5 ms 852 KB Output is correct
8 Correct 5 ms 852 KB Output is correct
9 Correct 4 ms 852 KB Output is correct
10 Correct 2 ms 468 KB Output is correct
11 Correct 5 ms 820 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 6 ms 852 KB 3rd lines differ - on the 22nd token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -