題目: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行輸...