poj 2570
#include<iostream>
#include<fstream>
using namespace std;
int n;
int map[201][201];
void read(){
// ifstream cin("in.txt");
int i,j,k;
char c[30];
while(cin>>n)
{
if(n==0) return;
memset(map,0,sizeof(map));
while(cin>>i>>j)
{
if(i==0&&j==0) break;
cin>>c;
for(k=0;k<strlen(c);k++)
map[i][j]+=1<<(c[k]-'a');
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]|=map[i][k]&map[k][j];
while(cin>>i>>j)
{
if(i==0&&j==0) break;
if(map[i][j]==0)
{
cout<<'-'<<endl;
continue;
}
int s=0;
for(k=0;k<26;k++)
{
if((1<<k)&map[i][j])
c[s++]=k+'a';
}
for(k=0;k<s;k++)
cout<<c[k];
cout<<endl;
}
cout<<endl;
}
}
int main(){
read();
return 0;
}
#include<fstream>
using namespace std;
int n;
int map[201][201];
void read(){
// ifstream cin("in.txt");
int i,j,k;
char c[30];
while(cin>>n)
{
if(n==0) return;
memset(map,0,sizeof(map));
while(cin>>i>>j)
{
if(i==0&&j==0) break;
cin>>c;
for(k=0;k<strlen(c);k++)
map[i][j]+=1<<(c[k]-'a');
}
for(k=1;k<=n;k++)
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
map[i][j]|=map[i][k]&map[k][j];
while(cin>>i>>j)
{
if(i==0&&j==0) break;
if(map[i][j]==0)
{
cout<<'-'<<endl;
continue;
}
int s=0;
for(k=0;k<26;k++)
{
if((1<<k)&map[i][j])
c[s++]=k+'a';
}
for(k=0;k<s;k++)
cout<<c[k];
cout<<endl;
}
cout<<endl;
}
}
int main(){
read();
return 0;
}
浙公网安备 33010602011771号