U149505【舞会邀请】

舞会邀请

题目

舞会邀请


解析

请大佬出题就是好
拓扑排序模板题,水掉
其实是为了填这道题没有用过评测机的坑,实际上早过了

#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;
}

猜你喜欢

转载自blog.csdn.net/zhanglili1597895/article/details/112984309
u