首先,我們知道每個人只能告訴乙個人(乙個出度),卻能被幾個人告知(入度不定)。
結論1:入度為0的人不可能從他人那裡知道自己生日;
結論2:假如入度為1的人的那個「1」入度為0,那麼他也不可能從他人那裡知道自己生日。
所以我們先把所有入度為0的人排除,以及讓被排除的人的告訴的人的入度減一,直到沒有入度為0的人;
又因為每個人只有乙個出度,那麼剩下的人的告知關係一定會變成幾個環;然後就只統計每個環就行了,但是資料大了這種方法還是會超時。
#includeusing namespace std;
int m=9999999,n;
int ha[200010],kao[200010];
int sf(int st,int hahaha)
int main(),w[200010];
scanf("%d",&n);
for(int z=1;z<=n;++z)
for(int z=1;z<=n;++z)
if(!kao[z])
q[++q[0]]=z;
kao[0]=1;
while(1)
}if(!w[0]) break;
} else
}if(!q[0]) break;
} }for(int z=1;z<=n;++z)
if(kao[z])
printf("%d",m);
}
作業之考試n
noip2015普及組 求和 using namespace std 所有在奇 偶數項的同一顏色可以滿足條件 int l,m,n,ha 100010 c 100010 int kao 100010 hahaha 10007 void sf c z 0 sf printf d l 假如序號為zn,那麼...
作業之考試n
可以推出第z個點的聯合權值為與這個點相連的點的權值和的平方減去這些點的權值的平方和 網上有 最大聯合權值格外設變數儲存。由於n過大,所以用vector陣列。includeusing namespace std long long l,m,n vector ha 200010 long long ka...
作業之考試n
1 積木大賽 block.cpp c pas 題目描述 春春幼兒園舉辦了一年一度的 積木大賽 今年比賽的內容是搭建一座寬度為?的大 廈,大廈可以看成由?塊寬度為1的積木組成,第?塊積木的最終高度需要是 在搭建開始之前,沒有任何積木 可以看成?塊高度為 0 的積木 接下來每次操作,小朋友們可以選擇一段...