hdu1625

来源:互联网 发布:如何抓取网页数据 编辑:程序博客网 时间:2024/05/13 16:44

floyd判环

蒟蒻的自我拯救。。。

#include <iostream>#include <algorithm>#include <cstdio>#include <cstring>#include <cmath>using namespace std;#define maxn 1100int d[maxn][maxn];int n,m;void init(){    memset(d,0,sizeof(d));    n=-1;}void floyd(){    for(int k=0;k<=n;k++)    {        for(int i=0;i<=n;i++)        {            for(int j=0;j<=n;j++)            {                d[i][j]=d[i][j]+d[i][k]*d[k][j];            }        }    }    for(int k=0;k<=n;k++)    if(d[k][k])    {        d[k][k]=-1;        for(int i=0;i<=n;i++)        {            for(int j=0;j<=n;j++)            {                if(d[i][k]&&d[k][j])                {                    d[i][j]=-1;                }            }        }    }}int main(){    int times=0;    while(~scanf("%d",&m))    {        int u,v;        init();        for(int i=1;i<=m;i++)        {            scanf("%d%d",&u,&v);            d[u][v]=1;            n=max(n,max(u,v));        }        floyd();        printf("matrix for city %d\n", times++);        for(int i=0;i<=n;i++)        {            for(int j=0;j<=n;j++)            {                printf(" %d",d[i][j]);            }            printf("\n");        }    }    return 0;}

0 0
原创粉丝点击