poj 2570 Fiber Network(floyd)

#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;

int mp[30][250][250];
int main()
{
    int n,u,v,i,j,l,k,p,f;
    char s[1024];
    while(~scanf("%d",&n))
    {
        if(n==0) break;
        memset(mp,0,sizeof(mp));

        while(~scanf("%d%d",&u,&v))
        {
            if(u==0&&v==0) break;
            scanf("%s",s);
            l=strlen(s);
            for(j=0; j<l; j++)
            {
                mp[s[j]-'a'][u][v]=1;
            }
        }

        for(p=0; p<26; p++)
        {
            for(k=1; k<=n; k++)

                for(i=1; i<=n; i++)
                {
                    if(!mp[p][i][k]) continue;
                    for(j=1; j<=n; j++)
                    {
                        if(k==i||k==j||i==j) continue;
                        if(mp[p][k][j])
                            mp[p][i][j]=1;
                    }
                }
        }

        while(~scanf("%d%d",&u,&v))
        {
            f=0;
            if(u==0&&v==0) break;
            for(i=0; i<26; i++)
            {
                if(mp[i][u][v])
                {
                    printf("%c",'a'+i);
                    f=1;
                }
            }
            if(f==0) printf("-");
            printf("
");
        }
        printf("
");
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zsychanpin/p/7207558.html