?**[
[floyd]poj 2570 fiber network #floyd+位运算
额。。。又在G++下TLE了。C++稳过。
*/
#include <stdio.h>
#include <string.h>
#define N 202
int u,v,n,mat[N][N],bit[27];
char s[30];
int main(){
int i,j,k;
for(i = 0; i < 26; ++i)
bit[i] = (1 << i);
while(scanf("%d",&n) != EOF && n){
memset(mat,0,sizeof(mat));
while(scanf("%d%d",&u,&v) != EOF && u){
scanf("%s",s);
for(i = 0 ; s[i]; ++i)
mat[u][v] |= bit[s[i] - 'a'];
}
for(k = 1; k <= n; ++k)
for(i = 1; i <= n; ++i)
for(j = 1; j <= n; ++j)
mat[i][j] |= (mat[i][k] & mat[k][j]);
while(scanf("%d%d",&u,&v) != EOF && u){
if(mat[u][v] == 0){
puts("-");
continue;
}
for(i = 0; i < 26; ++i)
if(mat[u][v] & bit[i])
printf("%c",char(i + 'a'));
puts("");
}
puts("");
}
return 0;
}
[floyd]poj 2570 fiber network #floyd+位运算
最新推荐文章于 2016-12-06 19:46:30 发布