码迷,mamicode.com
首页 > 其他好文 > 详细

UVa 280 - Vertex

时间:2014-10-07 12:31:53      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:blog   io   os   for   数据   sp   2014   c   log   

题目:统计一个有向图中,给定起点不能到达的点。

分析:图论,搜索。直接利用dfs遍历即可。

说明:起始点开始属于未被遍历的点,注意初始化数据。

#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>

using namespace std;

int maps[110][110];
int used[110];

void dfs(int s, int n)
{
	for (int i = 1 ; i <= n ; ++ i)
		if (!used[i] && maps[s][i]) {
			used[i] = 1;
			dfs(i, n);
		}
}

int main()
{
	int n,m,a,b,s;
	while (~scanf("%d",&n) && n) {
		memset(maps, 0, sizeof(maps));
		while (~scanf("%d",&a) && a) 
			while (~scanf("%d",&b) && b)
				maps[a][b] = 1;
		scanf("%d",&m);
		for (int i = 0 ; i < m ; ++ i) {
			memset(used, 0, sizeof(used));
			scanf("%d",&s);
			dfs(s, n);
			int count = n;
			for (int j = 1 ; j <= n ; ++ j)
				count -= used[j];
			printf("%d",count);
			for (int j = 1 ; j <= n ; ++ j)
				if (!used[j])
					printf(" %d",j);
			printf("\n");
		}
	}
	
	return 0;
}

UVa 280 - Vertex

标签:blog   io   os   for   数据   sp   2014   c   log   

原文地址:http://blog.csdn.net/mobius_strip/article/details/39852193

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!