poj 2570 Fiber Network floyd算法

来源:互联网 发布:小脑袋调价软件 编辑:程序博客网 时间:2024/04/29 10:51

题意:

在一个有n个结点的图中,点a,b之间可以有属于不同公司的边,现在要查询对于点a,b,有哪些公司可以从属于本公司的边上从a到b。

思路:

对每个公司都建图,直接floyd。

代码:

//poj 2570 //sepNINE#include <iostream>using namespace std;const int maxN=210;int g[30][maxN][maxN];int main(){int n;while(scanf("%d",&n)==1&&n){int a,b,i,j,k,t,x;char tmp[32];memset(g,-1,sizeof(g));while(1){scanf("%d%d",&a,&b);if(a==0)break;scanf("%s",tmp);for(i=0;tmp[i]!='\0';++i){x=tmp[i]-'a';g[x][a][b]=1;}}for(t=0;t<26;++t)for(k=1;k<=n;++k)for(i=1;i<=n;++i)for(j=1;j<=n;++j)if(g[t][i][k]!=-1&&g[t][k][j]!=-1)g[t][i][j]=1;while(1){scanf("%d%d",&a,&b);if(a==0)break;int flag=0;for(t=0;t<26;++t)if(g[t][a][b]==1){printf("%c",t+'a');flag=1;}if(flag==0)printf("-");printf("\n");}printf("\n");}return 0;} 


0 0
原创粉丝点击