답안 #1074224

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1074224 2024-08-25T08:55:13 Z zehnsechs 장난감 기차 (IOI17_train) C++14
0 / 100
2000 ms 6652 KB
#include "train.h"
#include<bits/stdc++.h>

using namespace std;


void dfs(int v, vector<int>& x, vector<int>& c, vector<vector<int>>& adj, vector<int>& res){
    if (x[v]) res[v]=1;
    cerr << "vertex " << v << '\n';    
    if(res[v]){
        for(int u: adj[v]){
            cerr << "n " << u << '\n';
            if (u==v) continue;
            c[u]--;
            if(c[u]==0) {
                res[u]=1;
                dfs(u,x,c,adj,res);
            }
        }
    }
}


vector<int> who_wins(vector<int> a, vector<int> r, vector<int> u, vector<int> v) {
	int n = a.size();
        int m = u.size();
        vector<int> res(n,1);
        vector<vector<int>> adj(n);
        vector<int> deg(n,0);
        
        //add the edges to adj in the opposite direction
        for(int i=0;i<m;++i){
            adj[v[i]].push_back(u[i]);
            deg[u[i]]++;
        }
        for(int i=0;i<n;++i){
            cerr << deg[i] << '\n';
        }
        
        bool con = true;
        while(con){
            con = false;
            vector<int> fa(n,0);
            vector<int> rm(n,0);
            vector<int> c0(n,1);
            vector<int> c1(n,1);
            for(int i=0;i<n;++i) (a[i] ? c1[i] = deg[i] : c0[i]= deg[i]);
            cerr << "fa" << '\n';
            for(int i=0;i<n;++i) if(r[i]&&res[i]) dfs(i,r,c0,adj,fa);
            vector<int> x(n,0);
            for(int i=0;i<n;++i) if(!fa[i]) x[i]=1;
            cerr << "fb" << '\n';
            for(int i=0;i<n;++i) if(!fa[i]&&res[i]) dfs(i,x,c1,adj,rm);
            for(int i=0;i<n;++i) if(rm[i]) {
                cerr << "unreachable " << i <<'\n';
                for(int u: adj[i]) deg[u]--;
                res[i]=0;
                con = true;
                }
        }



	return res;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 285 ms 1620 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 440 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 2 ms 348 KB Output is correct
4 Incorrect 1 ms 348 KB 3rd lines differ - on the 1st token, expected: '0', found: '1'
5 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 2086 ms 6652 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 177 ms 1512 KB 3rd lines differ - on the 696th token, expected: '0', found: '1'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 205 ms 1872 KB 3rd lines differ - on the 1st token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 285 ms 1620 KB 3rd lines differ - on the 14th token, expected: '1', found: '0'
2 Halted 0 ms 0 KB -