顯然我們可以記錄每個狀態前乙個狀態通過的鐵路。然後判斷這一次邊權值。
但是我們不能只用乙個狀態來記錄,因為可能兩個狀態的dis相等,但是具體用哪個點更新是不確定的。
所以我們需要用set去存一下。
ac**:
#pragma gcc optimize("-ofast","-funroll-all-loops")
#include
//#define int long long
using namespace std;
const
int inf=
0x3f3f3f3f
;const
int n=
1e5+
10,m=
1e6+10;
int n,m,d[n]
,vis[n]
;int head[n]
,nex[m]
,to[m]
,w[m]
,tot;
priority_queueint,
int>> q; set<
int> s[n]
;inline
void
ade(
int a,
int b,
int c)
inline
void
add(
int a,
int b,
int c)
void
dijkstra()
);while
(q.size()
)); s[to[i]].
clear()
; s[to[i]].
insert
(w[i]);
}else
if(d[to[i]
]==d[u]
+val) s[to[i]].
insert
(w[i]);
}}}signed
main()
西安 地下鉄
西安 地下鉄 3 去年 2016年11 月8 12 時 開通 時間 午前 午後 23 15 車 時間通 車 環境 西安 朝夕 厳重 多 會社人 學生 電車 毎日 通勤 通學 多 地下鉄 使 方法 便利 未來 數年 中 建造 楽 西安現在有 3條地鐵的線路,其中 3號線是去年 2016年11 月8日1...