(File IO): input:factory.in output:factory.out
時間限制: 1000 ms 空間限制: 262144 KB 具體限制
Goto ProblemSet
題目描述
牛奶生意正紅紅火火!的牛奶加工廠內有個加工站,編號爲,以及條通道,每條連接某兩個加工站。(通道建設很昂貴,所以選擇使用了最小數量的通道,使得從每個加工站出發都可以到達所有其他加工站)。
爲了創新和提升效率,在每條通道上安裝了傳送帶。不幸的是,當他意識到傳送帶是單向的已經太晚了,現在每條通道只能沿着一個方向通行了!所以現在的情況不再是從每個加工站出發都能夠到達其他加工站了。
然而,認爲事情可能還不算完全失敗,只要至少還存在一個加工站滿足從其他每個加工站出發都可以到達加工站。注意從其他任意一個加工站前往加工站i可能會經過和之間的一些中間站點。請幫助求出是否存在這樣的加工站i。
輸入
輸入的第一行包含一個整數,爲加工站的數量。以下行每行包含兩個空格分隔的整數和,滿足以及。這表示有一條從加工站向加工站移動的傳送帶,僅允許沿從到的方向移動。
輸出
如果存在加工站滿足可以從任意其他加工站出發都可以到達加工站,輸出最小的滿足條件的。否則,輸出。
樣例輸入
3
1 2
3 2
樣例輸出
2
數據範圍限制
解題思路
如果一個點是一條傳送帶的起始點(做過),那他連得點就不能時駛向他,就不復合題意。
所以,
我們就是要找的一個不是傳送帶起始點(沒做過)的點,
當然,若點中有個點沒做過輸出。
代碼
#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);
}