hiho week 79 register

Ended

Participants:158

Verdict:Accepted
Score:100 / 100
Submitted:2016-01-09 19:48:07

Lang:G++

Edit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
const int N=20000+10;
vector<int> edge[N];
vector<int> oedge[N];
bool vis[N];
int timestamp[N];
int group[N];
int top;
void dfs1(int root){
    vis[root]=true;
    for(int i=0;i<edge[root].size();i++)
        if(!vis[edge[root][i]]) dfs1(edge[root][i]);
    timestamp[top++]=root;
}
void dfs2(int root,int gId)
{
    vis[root]=true;
    group[root]=gId;
    for(int i=0;i<oedge[root].size();i++)
        if(!vis[oedge[root][i]]) dfs2(oedge[root][i],gId);
}
void addEdge(int a,int b){
    edge[a].push_back(b);
    oedge[b].push_back(a);
}
void init(){
    for(int i=0;i<N;i++)
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX