2020 GDUT Rating Contest Ⅱ F.Milk Factory

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);
}
发布了24 篇原创文章 · 获赞 1 · 访问量 667

猜你喜欢

转载自blog.csdn.net/palax0/article/details/104461165
今日推荐