POJ2570Fiber Network floyd

来源:互联网 发布:灯光效果设计软件 编辑:程序博客网 时间:2024/05/29 15:28

简单的floyd模板题,一是注意处理输入,二是将floyd的公式变形

#include <cstdio>#include <cstring>#include <cmath>#include <algorithm>#include <climits>#include <string>#include <iostream>#include <map>#include <cstdlib>#include <list>#include <set>#include <queue>#include <stack>using namespace std;#define maxn 201int n,cnt;int m[maxn][maxn];void floyd(){    int i,j,k;    for(k=1;k<=n;k++)    {        for(i=1;i<=n;i++)        {            for(j=1;j<=n;j++)            {                m[i][j]|=m[i][k]&m[k][j];            }        }    }}int main(){    int u,v,i;    char str[100];    while(cin>>n)    {        if(n==0) break;        cnt=0;        memset(m,0,sizeof(m));        while(cin>>u>>v)        {            if(u==0&&v==0) break;            scanf("%s",str);            for(i=0;i<strlen(str);i++)            {                m[u][v]|=(1<<(str[i]-'a'));            }        }        floyd();        int s,e;        while(cin>>s>>e)        {            if(s==0&&e==0) break;            string s1="";            for(i=0;i<26;i++)            {                if(m[s][e]&(1<<i))                printf("%c",i+'a');            }            //cout<<m[s][e]<<endl;            if(!m[s][e]) printf("-");            printf("\n");        }        printf("\n");    }    return 0;}


0 0
原创粉丝点击