【題目描述】
現在假設總共有n個營員(2<=n<=200),每個營員的編號為1~n。lhc給每個人發了一張調查表,讓每個營員填上自己願意讓哪些人到他那兒拷貝資料。當然,如果a願意把資料拷貝給b,而b又願意把資料拷貝給c,則一旦a獲得了資料,則b,c都會獲得資料。求最小需要燒錄多少張光碟。
【題目鏈結】
【演算法】
tarjan縮點再求度數為1的點的個數。縮點後,每個強連通分量視作乙個點,分量內的邊不考慮,其餘邊相當於使指向的點(分量)度數加一。
【**】
1 #include 2using
namespace
std;
3struct edgee[40010];4
intn,tot,num,top,cnt,ans;
5int head[210],stk[210],low[210],dfn[210],ins[210],c[210];6
bool v[210];7
void add(int
from,int
to)8
12void tarjan(int
x)13
else
if(ins[to])
22 low[x]=min(low[x],low[to]);23}
24if(dfn[x]==low[x]) while(x!=y);30}
31}32int
main()
3339
for(int i=1;i<=n;i++) if(!dfn[i]) tarjan(i);
40for(int i=1;i<=n;i++) 46}
47for(int i=1;i<=cnt;i++)
48if(!v[i]) ans++;
49 printf("
%d\n
",ans);
50return0;
51 }
洛谷 P2835 燒錄光碟
這道題目 先把沒有入度的點去灌水一遍 然後對於剩下的每乙個圖 他們不一定是乙個環 但是一定包含乙個環 我們只要找到乙個在環上的點,那麼就可以吧整個圖都灌水 include define ll long long using namespace std const int n 205 struct c...
洛谷P2835燒錄光碟
在jsoi2005夏令營快要結束的時候,很多營員提出來要把整個夏令營期間的資料燒錄成一張光碟給大家,以便大家回去後繼續學習。組委會覺得這個主意不錯!可是組委會一時沒有足夠的空光碟,沒法保證每個人都能拿到燒錄上資料的光碟,又來不及去買了,怎麼辦呢?組委會把這個難題交給了lhc,lhc分析了一下所有營員...
洛谷 P2835 燒錄光碟
其實這題水的一批.在jsoi2005夏令營快要結束的時候,很多營員提出來要把整個夏令營期間的資料燒錄成一張光碟給大家,以便大家回去後繼續學習。組委會覺得這個主意不錯!可是組委會一時沒有足夠的空光碟,沒法保證每個人都能拿到燒錄上資料的光碟,又來不及去買了,怎麼辦呢?組委會把這個難題交給了lhc,lhc...