給一張無向圖,n 個點和 m 條邊,cyb 在 1 號點,他要去 2 號點, cyb 可以從 a 走到 b,當且僅當 a 到 2 的最短路,比 b 到 2 的最短路長。 求 cyb 的路徑方案數 兩條路徑不同,當且僅當將兩條路徑中依次經過的邊的編號不完全相同, 圖可能會有重邊; 由於答案可能很大, 只需要輸出答案對於 10^9+9 取模的值即可
第一行兩個正整數 n,m 接下來 m 行 每行 x,y,z 表示有一條邊,長度為 z,鏈結了 x,y
乙個正整數表示答案
5 61 3 2
1 4 2
3 4 3
1 5 12
4 2 34
5 2 24
27 8
1 3 1
1 4 1
3 7 1
7 4 1
7 5 1
6 7 1
5 2 1
6 2 1
4 30%: n<=100,m<=1000
100%: n<=50000,,m<=100000
每條邊的長度<=1000
分析:上午考試我是真的不知道在幹什麼,這個基本的最短路然後重建邊再拓撲也沒看出來。。。
spfa以2為起點跑一遍,然
後按照要求重建邊再跑拓撲即可。但是有乙個問題,因為重建邊後1的入度可能不為0,那麼就反向建邊,因為可以保證2的入度一定為0。然後跑拓撲就行了。
code:
//it is made by holselee on 20th july 2018
//mod
#includeusing
namespace
std;
const
int n=5e4+7
;const
int m=2e5+7
;const
int mod=1e9+9
;int
n,m,v[n],head[n],size;
intdis[n],dg[n],ans;
bool
vis[n],rx[m];
struct
nodeedge[m];
inline
intread()
while(ch>='
0'&&ch<='9')
return flag?-num:num;
}inline
void add(int x,int y,int
z)void spfa(int
sta)}}}
void
remake()}}}
void toplogic(int
sta)}}}
intmain()
spfa(
2);remake();toplogic(2
); printf(
"%d\n
",v[1
]);
return0;
}
拓撲排序,關鍵路徑
拓撲排序 對於乙個流程圖,可以用頂點表示活動,弧表示活動間的優先關係,這樣所表示的有向圖稱為頂點表示活動的網,即aov網。在網中,如果頂點i到頂點j有一條有向路徑,或者 i,j 是一條弧,則i是j的前驅,j是i的後繼。aov網中不應該出現環。拓撲排序的思想很簡單,1 在有向圖中選乙個沒有前驅的頂點輸...
拓撲排序 關鍵路徑
功能function description hdoj 2094 開發環境environment dev c 4.9.9.1 技術特點technique 版本version 作者author 可笑痴狂 日期date 20120812 備註notes 策略問題 一 本來想先用字典樹給名字編號,然後用建...
關鍵路徑(拓撲排序)
一.先給出幾個概念 aoe 網 在帶權有向圖中頂點表示事物,有向邊表示活動,權表示活動持續的時間,則此有向圖稱為邊表示活動的網路。activity on edge network 表示實際工程的aoe 網應該是無環的,且存在唯一入度為0的起始頂點 始點 以及唯一出度為0的完成頂點 終點 利用aoe ...