`
linest
  • 浏览: 150419 次
  • 性别: Icon_minigender_1
  • 来自: 内蒙古
社区版块
存档分类
最新评论

pat-1013* Battle Over Cities

    博客分类:
  • pat
 
阅读更多
1013:
删除一个结点后保持其他结点连通性的问题

dfs遍历 看有多少划分 可能效率不是很好
#include<iostream>
using namespace std;
#include<memory.h>

int map[1001][1001];
int sto[1001][1001];
int city;
int way;
int num;

void dfs(int k)
{
	sto[0][k]=1;
	for(int i=1;i<=city;i++)
	{
		if(sto[k][i]==1&&sto[0][i]==0)
		{
			dfs(i);
		}
	}
}

int main()
{

	int a;
	int b;
	int occupy;
	int count;
	
	cin>>city;
	cin>>way;
	cin>>num;

	memset(map,0,sizeof(map));
	
	for(int i=0;i<way;i++)
	{
		cin>>a;
		cin>>b;
		map[a][b]=1;
		map[a][0]++;
		map[b][a]=1;
		map[b][0]++;
	}

	for(int i=0;i<num;i++)
	{
		memcpy(sto,map,sizeof(sto));
		cin>>occupy;
		count=0;
		for(int i=1;i<=city;i++)
		{
			if(sto[occupy][i]==1)
			{
				sto[occupy][i]=0;
				sto[i][occupy]=0;	
			}
		}

	
		for(int i=1;i<=city;i++)
		{
			if(sto[0][i]==0&&i!=occupy)
			{
				count++;
				dfs(i);
			}
		}

		cout<<count-1<<endl;

	}

}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics