国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Hdu 3631 Shortest Path(Floyd插點)

2019-11-11 01:10:38
字體:
來源:轉載
供稿:網友

題目地址:http://acm.hdu.edu.cn/showPRoblem.php?pid=3631

思路:Floyd,對于已求出最短路的圖,若增加一點k及相應的邊,則只需將k當做中間節點更新點u與點v的距離即可。因此,每增加一個標記點時,則將標記點當做中間節點更新最短路徑,由于點數只有300,時間上可以承受。

#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long LL;const int maxn=300+50;const int INF=0x3f3f3f3f;int n,m,q;int flag[maxn];LL g[maxn][maxn];void Floyd(int k){    for(int i=0; i<n; i++)    {        for(int j=0; j<n; j++)        {            g[i][j]=min(g[i][j],g[i][k]+g[k][j]);        }    }}void init(){    for(int i=0; i<n; i++)    {        g[i][i]=0;        for(int j=0; j<n; j++)            if(i!=j) g[i][j]=INF;    }    memset(flag,0,sizeof(flag));}int main(){    int cas=0;    while(scanf("%d%d%d",&n,&m,&q)!=EOF&&n)    {        cas++;        if(cas!=1) printf("/n");        printf("Case %d:/n",cas);        init();        for(int i=0; i<m; i++)        {            LL w;            int x,y;            scanf("%d%d%lld",&x,&y,&w);            g[x][y]=min(g[x][y],w);        }        for(int i=0; i<q; i++)        {            int cmd,x,y;            scanf("%d",&cmd);            if(cmd==0)            {                scanf("%d",&x);                if(flag[x]) printf("ERROR! At point %d/n",x);                else                {                    Floyd(x);                    flag[x]=1;                }            }            else            {                scanf("%d%d",&x,&y);                if(!flag[x]||!flag[y]) printf("ERROR! At path %d to %d/n",x,y);                else                {                    if(g[x][y]>=INF) printf("No such path/n");                    else printf("%lld/n",g[x][y]);                }            }        }    }    return 0;}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台州市| 台前县| 方山县| 宁河县| 开阳县| 永泰县| 阿合奇县| 荥阳市| 新宾| 玉田县| 万全县| 遂昌县| 嘉定区| 开化县| 北川| 万山特区| 南投县| 新郑市| 蒲城县| 岳池县| 五莲县| 临猗县| 吉林省| 楚雄市| 太谷县| 嘉荫县| 安陆市| 来宾市| 安康市| 小金县| 广安市| 云和县| 连城县| 扬中市| 资溪县| 天水市| 南召县| 禹城市| 元朗区| 海安县| 衡阳市|