最小生成樹 flyod 牛客第六場 I

2021-10-02 21:15:23 字數 1650 閱讀 7099

不知道說啥思路

這道題就是先跑一次線段樹看看建出來的圖是不是和輸入一樣

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#if __cplusplus >= 201103l

#include

#include

#endif

#define ll long long

using

namespace std;

const

int inf =

0x3f3f3f3f

;int b[

600]

[600

],c[

600]

[600];

int f[

600]

;struct suta[

1000010];

intcmp

(sut a,sut b)

intfind

(int x)

intuni

(int a,

int b)

return0;

}int

main()

}}bool flag=0;

sort

(a+1

,a+1

+cnt,cmp)

;for

(int i=

1;i<=n;i++

) f[i]

=i;int sum=

0,ans=0;

vector<

int> res;

for(

int i=

1;i<=n;i++)}

//除了對角線的都設成inf

for(

int i=

1;i<=cnt;i++)if

(sum==n-1)

break;}

for(

int k=

1;k<=n;k++

)for

(int i=

1;i<=n;i++

)for

(int j=

1;j<=n;j++

) c[i]

[j]=

min(c[i]

[j],c[i]

[k]+c[k]

[j])

;for

(int i=

1;i<=n;i++)}

if(flag) cout<<

"no"

<

else

return0;

}

2021牛客寒假第六場 動態最小生成樹(線段樹)

題目大意 有一張 n nn 個點,m mm 條邊的圖,每條邊連線點 ui,vi u i,v i ui vi 邊權為 w iw i wi 現要進行 q qq 次如下兩種操作種的一種 修改第 x xx 條邊為連線點 y,z y,zy,z 邊權為 ttt 查詢只用 l,r l,r l,r 範圍內的邊,得到...

牛客多校第六場

d 題意感覺說的不是很清楚,一開始題意弄錯了,以為是最優的方案,結果是對於每個盒子這個 so clever 的人的做法是優先選擇盡可能大的物品裝完乙個盒子,我就不知道這個人 聰明了。思路 賽後知道題意後,5分鐘寫完,瞎暴力就一發過了,我自己都有點出乎意料真水了。includeusing namesp...

2019牛客多校第六場C(PAM)

傳送門 不會pam,建議看一下該部落格pam 維護乙個陣列,表示節點對於答案的貢獻 那麼如何計算這個值呢,首先我們需要知道它是由誰轉移而來的,比如該節點表示的是aabbbbaa,他是由abbbba轉移而來的,我們在計算aabbbbaa時首先要加上abbbba,然後還有一些fail邊連向的點首先我們來...