답안 #416344

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
416344 2021-06-02T10:32:52 Z AmineTrabelsi 늑대인간 (IOI18_werewolf) C++14
0 / 100
4000 ms 39512 KB
#include "werewolf.h"
#include <bits/stdc++.h>
using namespace std;
const int Nx = 200000;
vector<int> gr[Nx];
struct node{
    int x;
    bool form; // 0 human 1 werewolf
    node(){}
    node(int _x,bool _form){
        x = _x;
        form = _form;
    }
};
vector<int> check_validity(int N, vector<int> X, vector<int> Y,vector<int> S, vector<int> E,vector<int> L, vector<int> R) {
    int Q = S.size();
    int M = X.size();
    vector<int> ans(Q,0);
    for(int i=0;i<M;i++){
        gr[X[i]].push_back(Y[i]);
        gr[Y[i]].push_back(X[i]);
    }
    for(int i=0;i<Q;i++){
        int s = S[i],e = E[i], l = L[i], r = R[i];
        queue<node> q;
        vector<vector<bool>> vis(N+1,vector<bool>(3,0));
        q.push(node(s,0));
        while(!q.empty()){
            node p = q.front();
            q.pop();
            if(p.x == e && p.form){
                ans[i] = 1;
                break;
            }
            if(vis[p.x][p.form] || (p.form && p.x > r) || (!p.form && p.x < l))continue;
            vis[p.x][p.form] = 1;
            for(auto u:gr[p.x]){
                if(p.form){
                    //werewolf
                    if(u <= r && !vis[u][1]){
                        q.push({u,1});
                    }
                }else{
                    // human
                    if(p.x >= l && p.x <= r && u <= r && !vis[u][1]){
                        q.push({u,1});
                    }
                    if(u >= l && !vis[u][0]){
                        q.push({u,0});
                    }
                }
            }
        }
        //cerr<<ans[i] << '\n';
    }
    return ans;
}
/*
4 3 1 2
h h h |w
0 1 2 3 4 5
H H | W W W
4 3 1 5 2

*/
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 4940 KB Output is correct
2 Incorrect 5 ms 4940 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 4940 KB Output is correct
2 Incorrect 5 ms 4940 KB Output isn't correct
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Execution timed out 4049 ms 39512 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 4940 KB Output is correct
2 Incorrect 5 ms 4940 KB Output isn't correct
3 Halted 0 ms 0 KB -