F. Milk Factory
题目描述
有n个站台和n-1条只能单向通行的路,问是否存在一个站台,满足所有路都能到达这个站台,没有则输出-1。
题目分析
题意很简单,直接用二维数组表示两处单向连通,再搜索每个站,看看是不是其他站都能到这个站。不过可能会漏掉类似3->2->1这种两点之间有多段路的情况(可能只有我漏了。。),所以还得把这种多段的路搭起来。
代码
#include <bits/stdc++.h>
using namespace std;
struct toward{
int from;
int to;
};
int con[102][102];
toward road[102];
int main(){
int n;
cin>>n;
for(int i=0;i<n-1;i++){
scanf("%d%d",&road[i].from,&road[i].to);
con[road[i].from][road[i].to]=1;
}
for(int i=0;i<n;i++){
toward temp=road[i];
for(int j=0;j<n-1;j++){//每个点能去的地方都搜一遍
if(temp.to==road[j].from){
con[road[i].from][road[j].to]=1;
temp=road[j];
j=-1;//一开始在这里j=0就wa了。。结束之后会j++,如果j=0就会跳过第一条路
}
}
}
int ok=-1,flag;
for(int i=1;i<=n;i++){
flag=1;
for(int j=1;j<=n;j++){
if(i==j)
continue;
if(con[j][i]!=1){
flag=0;
break;
}
}
if(flag){
ok=i;
break;
}
}
printf("%d\n",ok);
}