bfs
bfs 只入隊一次,出隊一次,可以抽象成拓撲圖。
因為它可以保證被更新的點的父節點一定已經是最短距離了,並且這個點的路徑數已經更新完成。
const int n=1e6+10;
vectorg[n];
int dist[n];
bool vis[n];
int cnt[n];
int n,m;
void bfs()
bfs();
for(int i=1;i<=n;i++)
if(dist[i] == -1) cout<<0<\(dijkstra\)
\(dijkstra\)每個點只出隊一次,也可以抽象成拓撲圖。
由於每乙個出隊的點一定已經是最短距離,並且這個點的路徑數已經更新完成。
const int n=1e6+10;
vectorg[n];
int dist[n];
bool vis[n];
int f[n];
int n,m;
void dijkstra()
); f[1]=1;
while(heap.size()));}
else if(dist[j] == dist[t]+w)}}
}int main()
); g[b].pb();
}dijkstra();
for(int i=1;i<=n;i++)
if(dist[i] == inf) cout<<0
}
P1144 最短路計數
給出乙個nn個頂點mm條邊的無向無權圖,頂點編號為1 n1 n。問從頂點11開始,到其他每個點的最短路有幾條。輸入格式 第一行包含22個正整數n,mn,m,為圖的頂點數與邊數。接下來mm行,每行22個正整數x,yx,y,表示有一條頂點xx連向頂點yy的邊,請注意可能有自環與重邊。輸出格式 共nn行,...
P1144 最短路計數
給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...
P1144 最短路計數
給出乙個n個頂點m條邊的無向無權圖,頂點編號為1 n。問從頂點1開始,到其他每個點的最短路有幾條。輸入格式 輸入第一行包含2個正整數n,m,為圖的頂點數與邊數。接下來m行,每行兩個正整數x,y,表示有一條頂點x連向頂點y的邊,請注意可能有自環與重邊。輸出格式 輸出包括n行,每行乙個非負整數,第i行輸...