Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 9234 | Accepted: 3690 |
Description
popular, even if this is not explicitly specified by an ordered pair in the input. Your task is to compute the number of cows that are considered popular by every other cow.
Input
* Lines 2..1+M: Two space-separated numbers A and B, meaning that A thinks B is popular.
Output
Sample Input
3 3 1 2 2 1 2 3
Sample Output
1
Hint
Source
void Tarjan(int u) //Tarjan
{
int v;
node[u].DFN=node[u].LOW=(++idx);
instack[u]=true;
stack[++top]=u;
for(Edge*p=node[u].first; p; p=p->next)
{
v=p->adj;
if(!node[v].DFN)
{
Tarjan(v);
if(node[v].LOW<node[u].LOW)
node[u].LOW=node[v].LOW;
}
else if(instack[v]&&node[v].DFN<node[u].LOW)
node[u].LOW=node[v].DFN;
}
if(node[u].DFN==node[u].LOW)
{
b_cnt++;
do
{
v=stack[top--];
instack[v]=false;
node[v].belongs=b_cnt;
}
while(u!=v);
}
}
for(i=1; i<=N; i++)
{
flag[i]=true;
for(Edge*p=node[i].first; p; p=p->next)
if(node[i].belongs!=node[p->adj].belongs
&&hash[node[i].belongs]!=node[p->adj].belongs)
{
hash[node[i].belongs]=node[p->adj].belongs;
InsertEdge2(node[i].belongs,node[p->adj].belongs);
}
else
if(node[i].belongs==node[p->adj].belongs&&!flag[p->adj])
{
now[node[i].belongs].sum++;
flag[p->adj]=true;
}
}