HDU 1599 find the mincost route(Floyd判最小环)

来源:互联网 发布:人工智能培训机构 编辑:程序博客网 时间:2024/05/01 00:50


#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <set>#define inf 10000000#define ll __int64using namespace std;int Map[600][600],ed[600][600],n,m,cnt;void Floyd(){    int i,j,k;    for(k=1;k<=n;k++)    {        for(i=1;i<k;i++)        {            for(j=1;j<i;j++)            {                cnt=min(cnt,ed[i][j]+Map[i][k]+Map[k][j]);            }        }        for(i=1;i<=n;i++)        {            for(j=1;j<=n;j++)            {                ed[i][j]=min(ed[i][j],ed[i][k]+ed[k][j]);            }        }    }    if(cnt>=inf)    {        printf("It's impossible.\n");    }    else        printf("%d\n",cnt);}int main(){    int i,j,k;    while(~scanf("%d%d",&n,&m))    {        cnt=inf;        for(i=1;i<=n;i++)        {            for(j=1;j<=n;j++)            {                if(i!=j)                {                    ed[i][j]=Map[i][j]=inf;                }                else                {                    ed[i][j]=Map[i][j]=0;                }            }        }        int a,b,c;        for(i=0;i<m;i++)        {            scanf("%d%d%d",&a,&b,&c);            if(Map[a][b]>c)            {                ed[a][b]=ed[b][a]=Map[a][b]=Map[b][a]=c;            }        }        Floyd();    }    return 0;}


0 0
原创粉丝点击