日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Wormholes--POJ 3259

發(fā)布時(shí)間:2024/4/11 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Wormholes--POJ 3259 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1、題目類型:圖論、最短路徑、Bellman-Ford算法。

2、解題思路:(1)根據(jù)輸入記錄所有的邊,其中無(wú)向邊轉(zhuǎn)換為有向邊記錄;(2)Bellman-Ford算法松弛所有的邊,尋找是否存在負(fù)圈。

3、注意事項(xiàng):注意Mov[]數(shù)組的大小。

4、實(shí)現(xiàn)方法:

#include<iostream>
using namespace std;
#define Maxn 510
#define Maxw 6000
#define INF 99999

struct TMove{
int s,e,t;
};
TMove Mov[Maxw];
int n,m,w,flag,cnt;

void Bellman_ford()
{
int i,j,start,end,time;
double d[Maxn];
for (i=0;i<n;i++)
d[i]
=INF;
d[
0]=0;
for (i=1;i<n;i++)
{
for (j=0;j<cnt;j++)
{
start
=Mov[j].s;
end
=Mov[j].e;
time
=Mov[j].t;
if (d[end]>d[start]+time)
d[end]
=d[start]+time;
}
}
for (j=0;j<cnt;j++)
{
start
=Mov[j].s;
end
=Mov[j].e;
time
=Mov[j].t;
if (d[end]>d[start]+time)
{
flag
=1;
return;
}
}
}

int main()
{
int i,f,s,e,t;
cin
>>f;
while(f--)
{
cin
>>n>>m>>w;
memset(Mov,
0,sizeof(Mov));
flag
=0,cnt=0;
for(i=0;i<m;i++)
{
cin
>>s>>e>>t;
s
--,e--;
Mov[cnt].s
=s;
Mov[cnt].e
=e;
Mov[cnt].t
=t;
cnt
++;
Mov[cnt].s
=e;
Mov[cnt].e
=s;
Mov[cnt].t
=t;
cnt
++;
}
for(i=0;i<w;i++)
{
cin
>>s>>e>>t;
s
--,e--;
Mov[cnt].s
=s;
Mov[cnt].e
=e;
Mov[cnt].t
=-t;
cnt
++;
}
Bellman_ford();
if(flag)
cout
<<"YES"<<endl;
else
cout
<<"NO"<<endl;
}
return 1;
}

?

轉(zhuǎn)載于:https://www.cnblogs.com/yongze103/archive/2010/08/11/1797468.html

總結(jié)

以上是生活随笔為你收集整理的Wormholes--POJ 3259的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。