p1967.cpp

来自「高手写的所有acm例程 在acm.zju.edu.cn 上的题目的例程」· C++ 代码 · 共 44 行

CPP
44
字号
// p1967.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdio.h>
#include <string.h>

int		N;
int		Data [200] [200];
int		Pow [26];

int main(int argc, char* argv[])
{
	freopen ( "p.in" , "r" , stdin );
	//freopen ( "p.out" , "w" , stdout );

	int		i , j , k , a , b , len;
	for ( i = 0; i < 26; i ++ ) Pow [i] = 1 << i;

	char	str [30];
	while ( scanf ( "%d" , &N ) , N ) {
		for ( i = 0; i < N; i ++ ) for ( j = 0; j < N; j ++ ) Data [i] [j] = 0;
		while ( scanf ( "%d%d" , &a , &b ) , a && b ) {
			a -- , b -- , scanf ( "%s" , str );
			len = strlen ( str );
			for ( i = 0; i < len; i ++ ) Data [a] [b]  |= Pow [str [i] - 'a'];
		}
		for ( k = 0; k < N; k ++ )
			for ( i = 0; i < N; i ++ ) if ( i != k )
				for ( j = 0; j < N; j ++ ) if ( j != i && j != k )
					Data [i] [j] |= Data [i] [k] & Data [k] [j];

		while ( scanf ( "%d%d" , &a , &b ) , a && b ) {
			k = 0 , a -- , b --;
			for ( i = 0; i < 26; i ++ ) if ( Data [a] [b] & Pow [i] ) printf ("%c" , i + 'a' ) , k = 1;
			if ( !k ) printf ( "-" );
			printf ( "\n" );
		}
				
		printf ( "\n" );
	}
	return 0;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?