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;
}

posted on 2011-05-31 10:31  宇宙吾心  阅读(158)  评论(0)    收藏  举报

导航