洛谷 T P2136 拉近距離

2022-04-06 06:32:33 字數 1331 閱讀 2350

我是源點,你是終點。我們之間有負權環。 ——小明

在小明和小紅的生活中,有n個關鍵的節點。有m個事件,記為乙個三元組(si,ti,wi),表示從節點si有乙個事件可以轉移到ti,事件的效果就是使他們之間的距離減少wi。

這些節點構成了乙個網路,其中節點1和n是特殊的,節點1代表小明,節點n代表小紅,其他代表進展的階段。所有事件可以自由選擇是否進行,但每次只能進行當前節點鄰接的。請你幫他們寫乙個程式,計算出他們之間可能的最短距離。

輸入格式:

第1行,兩個正整數n,m.

之後m行,每行3個空格隔開的整數si,ti,wi。

輸出格式:

一行,乙個整數表示他們之間可能的最短距離。如果這個距離可以無限縮小,輸出「forever love」(不含引號)。

輸入樣例#1:

3 3

1 2 3

2 3 -1

3 1 -10

輸出樣例#1:

-2

對於20%資料,n<=10,m<=50。

對於50%資料,n<=300,m<=5000。

對於全部資料,n<=1000,m<=10000,|wi|<=100,保證從節點1到n有路徑。

貌似必須要特盤乙個點、、

1 #include 2 #include 3

4const

int inf(0x3f3f3f3f);5

const

int n(1000+15);6

const

int m(10000+5);7

intn,m,head[n],sumedge;

8struct

edge913

}edge[m];

14 inline void ins(int u,int v,int

w)15

1920 std:: queueque;

21int

dis[n],inq[n],cnt[n];

22bool spfa(int

s)2338}

39}40return1;

41}4243

intmain()

4447

for(int u,v,w;m--;ins(u,v,-w))

48 scanf("

%d%d%d

",&u,&v,&w);

49if(spfa(1)) printf("

%d\n

",dis[n]);

50else printf("

forever love");

51return0;

52 }

洛谷 2136 拉近距離

我是源點,你是終點。我們之間有負權環。小明 在小明和小紅的生活中,有n個關鍵的節點。有m個事件,記為乙個三元組 si,ti,wi 表示從節點si有乙個事件可以轉移到ti,事件的效果就是使他們之間的距離減少wi。這些節點構成了乙個網路,其中節點1和n是特殊的,節點1代表小明,節點n代表小紅,其他代表進...

洛谷 P2136 拉近距離

我是源點,你是終點。我們之間有負權環。小明 在小明和小紅的生活中,有n個關鍵的節點。有m個事件,記為乙個三元組 si,ti,wi 表示從節點si有乙個事件可以轉移到ti,事件的效果就是使他們之間的距離減少wi。這些節點構成了乙個網路,其中節點1和n是特殊的,節點1代表小明,節點n代表小紅,其他代表進...

P2136 拉近距離

我也想有這樣的愛情故事,可惜我單身 其實這道題就是乙個比較裸的最短路問題。對於乙個三元組 s,w,t s其實就是乙個端點,而w就是到達的端點,連線兩個端點的邊長為 t,注意要取乙個相反數,這樣才能繼續跑最短路 那麼題意也就這麼看完了,就是很簡單的跑最短路嘛,小明是起點,小紅是終點,小明追小紅就完事了...