舞会邀请
题目
解析
请大佬出题就是好
拓扑排序模板题,水掉
其实是为了填这道题没有用过评测机的坑,实际上早过了
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,head[110],t,s=0,u[110],q=0;
bool a[110][110],ok;
bool check(int dep)
{
for(int i=1;i<=n;i++)
{
if(a[i][dep]&&u[dep]!=u[i])return 0;
}
return 1;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
while(1)
{
scanf("%d",&t);
if(t==0)break;
a[i][t]=1;
}
}
for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)a[i][j]=a[i][j]||a[i][k]&&a[k][j];
for(int i=1;i<=n;i++)
{
if(!u[i])
{
u[i]=++s;
for(int j=1;j<=n;j++)if(a[i][j]&&a[j][i])u[j]=s;
}
}
for(int i=1;i<=s;i++)
{
ok=0;
for(int j=1;j<=n;j++)if(u[j]==i&&!check(j))ok=1;
if(!ok)q++;
}
printf("%d",q);
return 0;
}