(紀中)2408. Milk Factory

(File IO): input:factory.in output:factory.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet


題目描述
牛奶生意正紅紅火火!FarmerJohnFarmer John的牛奶加工廠內有NN個加工站,編號爲1N1N1001…N(1≤N≤100,以及N1N−1條通道,每條連接某兩個加工站。(通道建設很昂貴,所以FarmerJohnFarmer John選擇使用了最小數量的通道,使得從每個加工站出發都可以到達所有其他加工站)。
爲了創新和提升效率,FarmerJohnFarmer John在每條通道上安裝了傳送帶。不幸的是,當他意識到傳送帶是單向的已經太晚了,現在每條通道只能沿着一個方向通行了!所以現在的情況不再是從每個加工站出發都能夠到達其他加工站了。
然而,FarmerJohnFarmer John認爲事情可能還不算完全失敗,只要至少還存在一個加工站ii滿足從其他每個加工站出發都可以到達加工站ii。注意從其他任意一個加工站jj前往加工站i可能會經過iijj之間的一些中間站點。請幫助FarmerJohnFarmer John求出是否存在這樣的加工站i。


輸入
輸入的第一行包含一個整數NN,爲加工站的數量。以下N1N−1行每行包含兩個空格分隔的整數aiaibibi,滿足1ai,biN1≤ai,bi≤N以及aibiai≠bi。這表示有一條從加工站aiai向加工站bibi移動的傳送帶,僅允許沿從aiaibibi的方向移動。

輸出
如果存在加工站ii滿足可以從任意其他加工站出發都可以到達加工站ii,輸出最小的滿足條件的ii。否則,輸出1−1


樣例輸入
3
1 2
3 2

樣例輸出
2


數據範圍限制


解題思路
如果一個點是一條傳送帶的起始點(做過aiai),那他連得點就不能時駛向他,就不復合題意。
所以,
我們就是要找的一個不是傳送帶起始點(沒做過aiai)的點,
當然,若點中有>1>1個點沒做過aiai輸出1-1


代碼

#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
#include<algorithm>
#include<iomanip>
#include<cmath>
using namespace std;
int n,a,b,x[110],y[110],ans;
int main(){
    freopen("factory.in","r",stdin);
    freopen("factory.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n-1;i++)
    {
        scanf("%d%d",&a,&b);
        x[a]++;
        y[b]++;
    }
    ans=-1;
    for(int i=1;i<=n;i++)
    {
        if(x[i]==0&&ans!=-1)  {ans=-1;break;}
        if(x[i]==0) ans=i;
    }
    printf("%d",ans);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章