[hdu1599]find the mincost route

来源:互联网 发布:盖世豪侠 知乎 编辑:程序博客网 时间:2024/04/28 14:37

一句话题意:求无向图的最小环的长度。

emm,这应该算是模板题或者叫floyd的经典应用吧。

#include<bits/stdc++.h>#define inf 100000000using namespace std;int n,m,x,y,z;int f[105][105],g[105][105];inline void floyd(){    int mini=inf;    for(int k=1;k<=n;k++)    {        for(int i=1;i<k;i++)            for(int j=1;j<i;j++)                mini=min(mini,f[i][j]+g[j][k]+g[k][i]);        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)                f[i][j]=min(f[i][j],f[i][k]+f[k][j]);               }    if(mini!=inf)printf("%d\n",mini);    else printf("It's impossible.\n"); }int main(){    freopen("in.txt","r",stdin);    while(scanf("%d%d",&n,&m)!=EOF)    {        for(int i=1;i<=n;i++)            for(int j=1;j<=n;j++)                   f[i][j]=g[i][j]=inf;        for(int i=1;i<=m;i++)        {            scanf("%d%d%d",&x,&y,&z);            f[x][y]=min(f[x][y],z);            f[y][x]=f[x][y];            g[x][y]=g[y][x]=f[x][y];        }        floyd();    }    return 0;} 

背过就好233

注意处理没有环的情况

原创粉丝点击