https://www.acwing.com/problem/content/description/856/
給定一個(gè)n
個(gè)點(diǎn)m
條邊的有向圖,圖中可能存在重邊和自環(huán),邊權(quán)可能為負(fù)數(shù)。
再給定k
個(gè)詢問(wèn),每個(gè)詢問(wèn)包含兩個(gè)整數(shù)x
和y
,表示查詢從點(diǎn)x
到點(diǎn)y
的最短距離,如果路徑不存在,則輸出impossible
。
數(shù)據(jù)保證圖中不存在負(fù)權(quán)回路。
Floyd算法:動(dòng)態(tài)規(guī)劃的思想
f[k][i][j]
表示考慮經(jīng)過(guò)前k
個(gè)點(diǎn),從i
到j
的距離的最小值f[k][i][j]=f[k-1][i][k]+f[k-1][k][j]
空間可以優(yōu)化掉一維:f[i][j]=f[i][k]+f[k][j]
#includeusing namespace std;
typedef long long LL;
const int N=210,INF=0x3f3f3f3f;
int d[N][N];
int n,m,t;
int main()
{cin>>n>>m>>t;
memset(d,0x3f,sizeof d);
for(int i=1;i<=n;i++) d[i][i]=0;
while(m--)
{int a,b,c;
cin>>a>>b>>c;
d[a][b]=min(d[a][b],c);
}
//floyd算法
for(int k=1;k<=n;k++)
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
d[i][j]=min(d[i][j],d[i][k]+d[k][j]);
while(t--)
{int x,y;
cin>>x>>y;
if(d[x][y]>INF/2) cout<<"impossible"<
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
本文名稱:Floyd算法-創(chuàng)新互聯(lián)
網(wǎng)站網(wǎng)址:http://chinadenli.net/article28/hehcp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、關(guān)鍵詞優(yōu)化、外貿(mào)建站、App開(kāi)發(fā)、用戶體驗(yàn)、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容