4246 五校聯考6day2 san

2021-09-10 08:58:17 字數 1795 閱讀 9174

小明經常去n 個地點,其中有些地點之間有直接的無向道路(共m 條這樣的道路),可以直接互相到達,這些道路的長短不一。由於小明對這些道路都很熟悉,無論起點和終點在**,總能走最短路。小明有嚴重的強迫症,認為奇數很不和諧,如果他某一天從乙個地點去另乙個地點走過的路程是奇數,就會很不爽,但他又不想白白多走路,所以遇到最短路長度是奇數的情況就只能忍了。

如果從某個地點a 到另乙個地點b 的最短路徑長度為奇數,則稱這條最短路徑為「不和諧最短路」。如果一條不和諧最短路上包含地點c,則稱它為「經過c 的不和諧最短路」。現在請你程式設計求出對於每個地點,經過它的不同的不和諧最短路數量。兩條最短路不同,當且僅當它們途徑的地點的序列不同。

第一行兩個正整數n;m,含義見題面。

接下來m 行,每行三個正整數ai;bi;li,表示一條無向道路的兩端和長度。

n 行每行乙個整數,第i 行表示經過第i 個點的不同的不和諧最短路條數。

4 4

1 4 1

1 2 1

3 4 100

2 3 2

642

2長度為奇數的最短路有:1 → 2; 1 → 2 → 3; 1 → 4; 2 → 1; 3 → 2 → 1; 4 → 1。

這些路徑中四個點的經過次數分別為6, 4, 2, 2。

其它一些路,如1 → 4 → 3 不是最短路,2 → 3 是最短路但長度為2,是偶數。這些路都不計入答案。

data constraint

對於50% 的資料,n ≤ 100;

對於全部資料,n ≤ 1000;m ≤ 3000,每條路的長度不超過1000。

保證圖連通,無自環重邊。

50%:n = 100,可以列舉起點和終點,用各種演算法列舉兩點間所有最短路並累加 答案,複雜度一般為 o(n^3 )。

100%:題目中的圖是一般圖,結構複雜沒有規律。考慮列舉起點並計算單源最短路,保留所有最短路中的邊(有向),原圖就變成了乙個dag,可以很方便地在上面進行拓撲排序,dp 等。再考慮長度為奇數的最短路,從乙個點斷開,一定是 一邊長度為奇數,另一邊長度為偶數。因此可以在dag上dp計算從起點到 達每個點的奇偶最短路徑分別有幾條,再逆序 dp計算從每個點出發的奇偶最1短路徑條數,在後面的dp過程中順便統計答案。這樣對每個起點算一遍。複雜度o(nm log n)。

然而我的做法就是列舉起點i,求出i到每個點的dis,然後就dfs走那些是最短路的邊,不是的可以忽略,這樣原無向圖就變成了乙個dag(有向無環圖)。然後我們就計算出每個點的size,答案就加上size[i],表示從起點s走到當前這個點以及所有這個點的兒子路程和為奇數的點都要經過當前點。那麼如何計算呢?若果從起點開始走到當前的點走過的路程是奇數,就將size[x]=1,否則=0。然後size[x]+=size[son_x]。注意size[s(起點)]=0。

#include#include#include#define n 1010

#define m 3010

using namespace std;

int n,m,x,y,z,f[n],bz[n],d[n*10],t[m*2],nx[m*2],c[m*2],ls[n],ans[n],sz[n];

void add(int x,int y,int z)

void dg(int x,int st)

} ans[x]+=sz[x];

}int main()

for(int i=1;i<=n;i++)}}

} dg(i,0);

} for(int i=1;i<=n;i++) printf("%d\n",ans[i]);

return 0;

}

五校聯考6day2 san

description 小明經常去n 個地點,其中有些地點之間有直接的無向道路 共m 條這樣的道路 可以直接互相到達,這些道路的長短不一。由於小明對這些道路都很熟悉,無論起點和終點在 總能走最短路。小明有嚴重的強迫症,認為奇數很不和諧,如果他某一天從乙個地點去另乙個地點走過的路程是奇數,就會很不爽,...

五校聯考6day2 er

description 小明在業餘時間喜歡打電子遊戲,不是星際和魔獸這些,是賽爾號一類的遊戲。最近小明在玩一款新出的遊戲,叫做 小明覺得遊戲裡自己的裝備太垃圾了,每次都被大神虐,一怒之下充了 元準備強化裝備。這個遊戲中用於強化裝備的道具叫做強化符文。有以下3 種 賦值強化符文,對某個裝備使用這個符文...

4244 五校聯考6day2 yi

小明是 星際旅遊公司的員工,負責安排飛船,有n 艘飛船由他管理,每艘飛船能容納的人數都不同。今天小明被要求為乙個去銻星的旅遊團安排往返的飛船,旅遊團有m人,小明希望用最少的飛船完成任務。但不是所有的飛船都能用的,地球和銻星距離k镾 此單位由銻星人發明,後在星際旅遊業界廣泛使用 而每一艘飛船加滿燃料後...