답안 #612496

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
612496 2022-07-29T16:04:51 Z MohamedAliSaidane 장난감 기차 (IOI17_train) C++14
0 / 100
6 ms 1236 KB
#include <bits/stdc++.h>
//#include "train.h"
    using namespace std;

    typedef long long ll;
    typedef double ld;
    typedef pair<int,int> pii;
    typedef pair<ll,ll> pll;

    typedef vector<int> vi;
    typedef vector<ll> vll;
    typedef vector<pii> vpi;
    typedef vector<pll> vpl;

    #define pb push_back
    #define popb pop_back
    #define all(x) (x).begin(),(x).end()

    #define ff first
    #define ss second

    const int nax = 5004;
    const int MOD = 1e9 + 7;



//std::vector<int> who_wins(std::vector<int> a, std::vector<int> r, std::vector<int> u, std::vector<int> v);
    int  n, m;
    vi adj[nax];
    int vis[nax];
    int A[nax], C[nax], self[nax];
    int dfs(int x, int dep = n)
    {
        vis[x] = 1;
        dep = C[x] ? n: dep;
        if(dep == 0)
            return A[x] ? 0 : 1;
        int rep = 0;
        for(auto e: adj[x])
        {
            if(vis[e])
            {
                if(A[x])
                    rep = 1;
            }
            else
            {
                if(A[e] == A[x])
                {
                    if(rep == 0 )
                        rep = dfs(e, dep - 1);
                }
                else
                {
                    if(rep == 0)
                        rep = 1 - dfs(e, dep - 1);
                }
            }
        }
        vis[x] = 0;
        return rep;
    }
    vi who_wins(vi a, vi r, vi u, vi v)
    {
        n = a.size();
        m = u.size();
        for(int i = 0 ; i < n; i++)
        {
            A[i] = a[i];
            C[i ] = r[i];
        }
        for(int i = 0 ; i  < m; i ++)
        {
            adj[u[i]].pb(v[i]);
            if(u[i] == v[i])
                self[i] = 1;
        }
        vi ans(n);
        for(int i = n - 1;i  >= 0; i--)
        {
            if(a[i])
            {
                if(C[i] && self[i])
                    ans[i] = 1;
                else
                {
                    for(auto e: adj[i])
                        ans[i] = ans[i] | ans[e];
                }
            }
            else
            {
                if(!C[i] && self[i])
                    ans[i] = 0;
                else
                {
                    ans[i] = 1;
                    for(auto e: adj[i])
                        ans[i] &= ans[e];
                }
            }
        }
        return ans;

    }

/*
int main() {
	int n, m;
	assert(2 == scanf("%d %d", &n, &m));

	vector<int> a(n), r(n), u(m), v(m);

	for(int i = 0; i < n; i++)
		assert(1 == scanf("%d", &a[i]));

	for(int i = 0; i < n; i++)
		assert(1 == scanf("%d", &r[i]));

	for(int i = 0; i < m; i++)
		assert(2 == scanf("%d %d", &u[i], &v[i]));

	vector<int> res = who_wins(a, r, u, v);

	for(int i = 0; i < (int)res.size(); i++)
		printf(i ? " %d" : "%d", res[i]);
	printf("\n");

	return 0;
}
*/

# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB 3rd lines differ - on the 11th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 340 KB 3rd lines differ - on the 2nd token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 1236 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 1076 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 6 ms 1132 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 4 ms 852 KB 3rd lines differ - on the 11th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -