我也想有這樣的愛情故事,可惜我單身
其實這道題就是乙個比較裸的最短路問題。對於乙個三元組 (s,w,t) ,s其實就是乙個端點,而w就是到達的端點,連線兩個端點的邊長為-t,注意要取乙個相反數,這樣才能繼續跑最短路
那麼題意也就這麼看完了,就是很簡單的跑最短路嘛,小明是起點,小紅是終點,小明追小紅就完事了,那麼我們就可以得到第乙份**了
#include using namespace std;
queueshan;
int n,m,s,t,w,ans,tot;
int dis[50010],vis[50010],sum[50010],head[50010];
struct node e[50010];
inline void add(int u,int v,int w)
//標準的鏈式前向星建邊
inline bool spfa()
}} }
return true;
}int main()
if(n==1) //特判1的的情況,然而資料中沒有(還是要保證一下資料的正確性,有點水)
if(spfa()==false) puts("forever love"); //如果有負環,那就幸福地在一起吧 (我也想~~)
else printf("%d",dis[n]); //不行的話就慢慢靠近吧
return 0;
}
然後你就會驚奇地發現你wa了乙個點,在我除錯了許久之後,然後問了問同學,發現這簡直是乙個真正的美好的愛情故事(扯遠了。。)。小明可以追小紅,那小紅為什麼不可以追小明呢(封建思想),所以我們就需要跑兩次最短路,一次是從小明出發,一次是從小紅出發,得出兩者之間最小的答案就可以了
#includeusing namespace std;
const int maxn=1e4+50;
int n,m;
int head[maxn],tot;
struct nodee[maxn];
void add(int u,int v,int w)//還是鏈式前向星建邊
int vis[maxn],d[maxn];
bool v[maxn];
queueq;
bool spfa(int s)
}} }
return true; //千萬別把這步漏掉了,不然預設返回false
}int main()
int ans=20040915; //ans記錄答案
bool kk=spfa(1);
if(kk==false) puts("forever love"); //有負環那就永遠在一起
else {
ans=min(ans,d[n]);
spfa(n);
ans=min(ans,d[1]);
cout《那麼這樣的話,這道題就成功解決了,最後祝大家也早日找到自己喜歡的女生啊,女生就找男生了啊
洛谷 P2136 拉近距離
我是源點,你是終點。我們之間有負權環。小明 在小明和小紅的生活中,有n個關鍵的節點。有m個事件,記為乙個三元組 si,ti,wi 表示從節點si有乙個事件可以轉移到ti,事件的效果就是使他們之間的距離減少wi。這些節點構成了乙個網路,其中節點1和n是特殊的,節點1代表小明,節點n代表小紅,其他代表進...
P2136 拉近距離 題解
題目傳送門 可能更好的閱讀體驗 對於乙個有向圖 g 有 n 個點,m 個邊,把每一條邊用三元組 s i,t i,w i 其中 s i,t i 表示兩個端點,w i 表示這條邊的長度。如果這個圖中從點 1 到點 n 的最短路可以無限縮小,請輸出forever love,否則輸出最短路長度。通過資料範圍...
洛谷P2136 拉近距離(負環判定)
我是源點,你是終點。我們之間有負權環。小明 在小明和小紅的生活中,有 nnn 個關鍵的節點。有 mmm 個事件,記為乙個三元組 si,ti,wi s i,t i,w i si ti wi 表示從節點 sis isi 有乙個事件可以轉移到 tit iti 事件的效果就是使他們之間的距離減少 wiw i...