NOIP2016提高A組8 12 通訊

2022-08-18 05:27:16 字數 1019 閱讀 5050

首先處理忽略劃分的情況,如果兩個部門可以直接或間接地相互傳遞訊息,那麼他們一定在同乙個強連通分量之中。就用tarjan縮點。

所點後就變成了個有向無環圖,

很容易想到,最小花費的方案數選的路線,一定只有n-1條,也就是說每個強連通分量塊的入邊只有乙個(除了0所在的強連通分量塊)。

那麼就每個強連通分量塊(除了0所在的強連通分量塊)選乙個最小的入邊計入答案。

#include #include #include #include #include #include #include const int maxlongint=2147483647;

const int mo=1000000007;

const int n=50005;

using namespace std;

int next[n*4],last[n*4],to[n*4],v[n*4];

int next1[n*4],last1[n*4],to1[n*4],v1[n*4];

int n,m,tot,dd,d[n],dfn[n],low[n],ddd,part[n],num,ans[n],sum;

bool bz[n];

int bj(int i,int x,int y,int z)

int tarjan(int x)

else

if(!part[j])

low[x]=min(low[x],low[j]);

} if(dfn[x]==low[x]) }

}int bj1(int x,int y,int z)

int main()

dd=tot=0;

num=0;

tarjan(0);

tot=0;

sum=0;

for(int i=0;i<=n-1;i++)

}for(int i=1;i<=num-1;i++)

sum+=ans[i];

printf("%d\n",sum);

}}

NOIP2016提高A組8 12 禮物

夏川的生日就要到了。作為夏川形式上的男朋友,季堂打算給夏川買一些生日禮物。商店裡一共有種禮物。夏川每得到一種禮物,就會獲得相應喜悅值wi 每種禮物的喜悅值不能重複獲得 每次,店員會按照一定的概率pi 或者不拿出禮物 將第i種禮物拿出來。季堂每次都會將店員拿出來的禮物買下來。眾所周知,白毛切開都是黑的...

NOIP2016提高A組8 12 通訊

多組資料,檔案以2個0結尾。每組資料第一行,乙個整數n,表示有n個包括總部的部門 從0開始編號 然後是乙個整數m,表示有m條單向通訊線路。接下來m行,每行三個整數,xi,yi,ci,表示第i條線路從xi連向yi,花費為ci。每組資料一行,乙個整數表示達到目標的最小花費。3 3 0 1 100 1 2...

NOIP2016提高A組8 12 通訊

首先處理忽略劃分的情況,如果兩個部門可以直接或間接地相互傳遞訊息,那麼他們一定在同乙個強連通分量之中。就用tarjan縮點。所點後就變成了個有向無環圖,很容易想到,最小花費的方案數選的路線,一定只有n 1條,也就是說每個強連通分量塊的入邊只有乙個 除了0所在的強連通分量塊 那麼就每個強連通分量塊 除...