2014新生暑假個人排位賽06

2021-06-22 23:00:58 字數 1172 閱讀 1362

時間限制 3000 ms

記憶體限制 65536 kb

小弱的學校很喜歡修路,現在給你一張他學校的地圖,地圖上有n個點和m條雙向邊,每條邊代表一條路,這條路有可能是暢通,也有可能正在修路。大家都知道修路使得交通很不方便。所有小弱很想學校快快的把路修好,使得他能夠很輕鬆的到達主樓915去刷題。但考慮到學校的施工能力有限,小弱想讓你幫他算出學校需要集中力量馬上修好的最少路數,使得他能夠從學校任意點出發,在不經過正在施工的路下到達主樓(編號為1)。

有多組資料。

每組資料以n( 1<=n<=10000), m(1<=m<=200000)開頭。接下來一行有m行數。每行有三個數,對應於u, v, s,分別為這條路的兩端點(編號從1到n)和路況,s = 0代表暢通, s = 1 代表正在修路。輸入保證圖是連通圖。

對每組資料輸出對應的最少路數。

3 2

1 2 0

1 3 1

3 21 2 0

1 3 0

3 21 2 1

1 3 1

1

02

比賽的時候莫名其妙用最短路wa了n次,最後居然被ak了。。太尷尬。得早睡了。。。

#include #include #include using namespace std;

int father[10010],rank[10010],vis[10010];

int find(int x)

void unite(int x,int y)

int main()

e[200010];

int head[100010],cnt;

int n,m;

int dp[100010],num[100010];

void add(int u,int v)

void init()

cnt=1;}

int dfs(int u,int fa)

dp[u]=n-num[u];

for(int i=head[u];i;i=e[i].next)

return num[u];}

int main()

{ while(~scanf("%d%d",&n,&m)){

init();

for(int i=0;i

7 25 2014新生暑假個人排位賽06

a題kruskal 並查集。注意要先把已經修好的路遍歷一遍形成最小生成樹。還有。我把修好的路看成1,未修好的路看成0.以後要認真讀題啊警示自己 我是可愛的分割線 b 高興 題意 每兩個東西相鄰有乙個高興值。找出總高興值最大的排列。2 0 12 0 30 1 7 3 0 3 3 3 0 2 10解法 ...

2014新生暑假個人排位賽08

時間限制 1000 ms 記憶體限制 65536 kb 小弱發明了乙個好玩的遊戲,遊戲開始時給你乙個凸多邊形,這個多邊形可以任意旋轉,平移。讓你造出乙個正方形 容器 足夠大 容器的兩邊垂直,兩邊水平。用這個容器把這個多邊形完全包含,且多邊形有且只有一條邊恰好與容器下邊界重合 與外界相通 不同的邊與外...

2014新生暑假個人排位賽11

時間限制 3000 ms 記憶體限制 65536 kb 喜歡焦叔叔的小妹妹實在是太多了,以至於焦叔叔不得不給她們編號1 n。焦叔叔對於編號為質數的小妹妹有種特別的好感,由於有好感的小妹妹數目太多,焦叔叔自己都數不清楚了,請你來幫忙數一下。多組資料,每行乙個正整數n,n不大於1000000000。資料...