72分求调(玄关)
查看原帖
72分求调(玄关)
468930
wrx20100919楼主2024/5/30 20:16
#include<bits/stdc++.h>
using namespace std;
int n,a,dis[1001][1001],g[1001];//g[]记录每一个人的资料从谁那里得到 
void floyd(){
	for(int k=1;k<=n;k++)
		for(int i=1;i<=n;i++)
			for(int j=1;j<=n;j++)
				if(dis[i][j]==1||dis[i][k]==1&&dis[k][j]==1)
				{
					dis[i][j]==1;
				}
}
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		g[i]=i;
	} 
	for(int i=1;i<=n;i++)
	{
		while(cin>>a&&a)
			dis[i][a]=1;		
	}
	floyd();//这个人能否得到资料 
	for(int i=1;i<=n;i++){
		for(int j=1;j<=n;j++){
			if(dis[i][j])
			g[j]=g[i]; //j从i那里拿到了资料
		}
	} 
	int cnt=0;
	for(int i=1;i<=n;i++){
		if(g[i]==i)
		cnt++;
	} 
	cout<<cnt<<endl;
	return 0;
} 
2024/5/30 20:16
加载中...