답안 #34987

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
34987 2017-11-17T09:10:40 Z xooxooxooxoox 스파이 (JOI13_spy) C++14
10 / 100
179 ms 262144 KB
#include<iostream>
#include<cstdio>
#include<cmath>
#include<deque>
#include<queue>
#include<stack>
#include<set>
#include<vector>
#include<algorithm>
#include<array>
#include<iomanip>
#include<bitset>
#define ll int
#define ld long double
#define maxN 2001
#define oo 1000000000000000001
#define Mod 1000000007

#define pii pair<ll,ll>
#define fi first
#define se second
#define piii pair<ll,pii>
#define fifi first.first
#define fise first.second
#define sefi second.first
#define sese second.second
#define endl '\n'

#define gc getchar
#define pc putchar
using namespace std;
/// ***************************** FAST I/O *****************************
inline void read(ll &x)
{
    register int c = gc();
    x = 0;
    int neg = 0;
    for (;((c<48 || c>57) && c != '-') ;c = gc());
    if(c=='-') {neg=1;c=gc();}
    for(;c>47 && c<58;c = gc()) {x = (x<<1) + (x<<3) + c - 48;}
    if(neg) x=-x;
}

inline void writeln(ll x)
{
     char buffor[21];
     register int i=0;
     int neg=0; if (x<0) {neg=1; x= -x;}
     do{
           buffor[i++]=(x%10)+'0';
           x/=10;
        } while(x);
       i--;
       if (neg) pc('-');
       while(i>=0) pc(buffor[i--]);
       pc('\n');
}
/// ***************************** FAST I/O *****************************
ll n,m;
ll x,y;
vector<ll> f[maxN];
vector<ll> g[maxN];
bitset<500001> p[maxN];
bitset<500001> q[maxN];

void DFS1(ll u)
{
    for(int v:f[u])
    {
        p[v]=(p[v]|p[u]);
        DFS1(v);
    }
}
void DFS2(ll u)
{
    for(int v:g[u])
    {
        q[v]=(q[v]|q[u]);
        DFS2(v);
    }
}
void Enter()
{
    //cin>>n>>m;
    read(n);
    read(m);
    for(int i=1;i<=n;++i)
    {
        //cin>>x>>y;
        read(x);
        read(y);
        f[x].push_back(i);
        g[y].push_back(i);
    }
    for(int i=0;i<m;++i)
    {
        //cin>>x>>y;
        read(x);
        read(y);
        p[x].set(i);
        q[y].set(i);
    }
    DFS1(0);
    DFS2(0);
    for(int i=1;i<=n;++i)
    {
        ll ans=(p[i]&q[i]).count();
        writeln(ans);
    }

}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    //freopen("SPY.inp","r",stdin);
    //freopen("SPY.out","w",stdout);
    Enter();
}


# 결과 실행 시간 메모리 Grader output
1 Correct 29 ms 258704 KB Output is correct
2 Correct 23 ms 258704 KB Output is correct
3 Correct 23 ms 246604 KB Output is correct
4 Correct 19 ms 246608 KB Output is correct
5 Correct 23 ms 247460 KB Output is correct
6 Correct 33 ms 247588 KB Output is correct
7 Correct 19 ms 251796 KB Output is correct
8 Correct 23 ms 248564 KB Output is correct
9 Correct 0 ms 246548 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Memory limit exceeded 9 ms 262144 KB Memory limit exceeded
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Memory limit exceeded 179 ms 262144 KB Memory limit exceeded
2 Halted 0 ms 0 KB -