C P1144 最短路計數

2021-07-24 16:52:10 字數 677 閱讀 5588

題目:p1144 最短路計數

他們居然說是水題,看來我還是太low了。

用spfa求最短路,然後記錄有多少個相同的到該點的最短路。

你忽略了重邊了嗎?

# include # include # include using namespace std;

const int maxn = 0x7fffffff / 3;

int n, m, dis[1000010], ans[1000010], u, v; // dis記錄1到其它點的最短路, ans儲存最短路個數

vectormap[1000010];

bool vis[1000010];

queues;

void spfa(int root) else if(dis[v] == dis[u] + 1) // 如果找到u到v的距離與到v的最短路距離一樣

ans[v] = (ans[v] + ans[u]) % 100003; // 該點最短路個數為u最短路個數+v最短路個數

} vis[u] = false; }}

int main()

spfa(1);

for(int i = 1; i <= n; i++) cout << ans[i] << endl;

return 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行輸...