ACM 火星国的无脑总统

思路:dfs


这是一道对图比较浅显的表示的题

思路很有启发性,对思维有帮助。

#include<iostream>
using namespace std;
const int N=100;
int vist[N];
int map[N][N]; 
int n;
int dfs(int x)
{
	vist[x]=1;
	for(int i=1;i<=n;++i)
	{
		if(x==i) continue;//细微效果的剪枝
		if(map[x][i]==1 && vist[i]==0)
		{
			dfs(i);
		}
	}
	return 1;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;++i)//键入城市信息 n 
	{
		int m;
		cin>>m;
		while(m--)
		{
			int state;
			cin>>state;
			map[i][state]=1;
			map[state][i]=1;
		}
	}
	int sum=0;
	for(int i=1;i<=n;++i)
	{
		if(vist[i]==0)
		{
			sum+=dfs(i);
		}
	}
	cout<<sum<<endl;
	return 0;
}




你可能感兴趣的:(ACM 火星国的无脑总统)