拓扑排序模板。
#include<cstdio>
#include<vector>
#include<stack>
using namespace std;
#define N 10001
vector<int>G[N];
stack<int>S;
int n,m,x,y,ru[N],tot;
int main()
{
scanf("%d%d",&n,&m);
for(int i=;i<=m;i++)
{
scanf("%d%d",&x,&y);
G[x].push_back(y);
ru[y]++;
}
for(int i=;i<=n;i++)
if(!ru[i])
S.push(i);
while(!S.empty())
{
int U=S.top(); S.pop();
tot++;
for(vector<int>::iterator it=G[U].begin();it!=G[U].end();it++)
if(!(--ru[*it]))
S.push(*it);
}
if(tot==n) puts("o(∩_∩)o");
else printf("T_T\n%d\n",n-tot);
return ;
}