首先處理忽略劃分的情況,如果兩個部門可以直接或間接地相互傳遞訊息,那麼他們一定在同乙個強連通分量之中。就用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所在的強連通分量塊 那麼就每個強連通分量塊 除...