반응형

www.acmicpc.net/problem/2458

 

2458번: 키 순서

1번부터 N번까지 번호가 붙여져 있는 학생들에 대하여 두 학생끼리 키를 비교한 결과의 일부가 주어져 있다. 단, N명의 학생들의 키는 모두 다르다고 가정한다. 예를 들어, 6명의 학생들에 대하여

www.acmicpc.net

 

[ 백준 2458번 키순서 소스 코드 ]

[ 한국정보올림피아드 지역본선 2011년 초등부 키순서  소스 코드 ]

#include <cstdio>
#include <queue>
using namespace std;
int main()
{
	int n, m, i, j, ka[501][501]={0,}, x, y, a[501];
	int check[501]={0,};
	queue <int> q;
	scanf("%d %d", &n, &m);
	for(i=0;i<m;i++)
	{
		scanf("%d %d", &x, &y);
		ka[x][y] = 1;
		ka[y][x] = 2;
	}
	for(i=1;i<=n;i++)
	{
		q.push(i);
		check[j] = 1;
		while(!q.empty())
		{
			x = q.front();
			q.pop();
			for(j=1;j<=n;j++)
			{
				if(ka[x][j]==1 && check[j]==0)
				{
					a[i]++;
					check[j] = 1;
					q.push(j);
				}
			}
		}
		for(j=1;j<=n;j++)
			check[j] = 0;
	}
	for(i=1;i<=n;i++)
	{
		q.push(i);
		check[j] = 1;
		while(!q.empty())
		{
			x = q.front();
			q.pop();
			for(j=1;j<=n;j++)
			{
				if(ka[x][j]==2 && check[j]==0)
				{
					a[i]++;
					check[j] = 1;
					q.push(j);
				}
			}
		}
		for(j=1;j<=n;j++)
			check[j] = 0;
	}
	x = 0;
	for(i=1;i<=n;i++)
	{
		if(a[i]==n-1)
			x++;
	}
	printf("%d", x);
	return 0;
}

 

반응형
Posted by 명문코딩컴퓨터
,