求调,谢谢(0分代码)
  • 板块P1347 排序
  • 楼主rainbow_star
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/11/8 16:34
  • 上次更新2023/11/4 01:05:57
查看原帖
求调,谢谢(0分代码)
355521
rainbow_star楼主2021/11/8 16:34
#include<iostream>
#include<cstdio>
#include<vector>
using namespace std;
typedef long long ll;
const ll N=30;
bool myvis[N];
ll n,m;
bool isfirst[N];
vector<ll> ans;
char c1,c2,c3;
vector<ll> road[N];
ll in[N],bin[N];
ll dep;
bool vis[N];
bool flag1=false;
//bool tjbz=false;
void dfs(ll now)
{
	///bool flag2=false;
	vis[now]=true;
	ans.push_back(now);
	dep++;
	ll i;
	for(i=0;i<road[now].size();i++)
	{
		if(vis[road[now][i]]==true)
		{
			flag1=true;
			break;
		}
		in[road[now][i]]--;
		if(in[road[now][i]]==0)
			dfs(road[now][i]);
	}
	dep--;
}
int main()
{
	scanf("%lld%lld",&n,&m);
	ll i,j;
	for(i=1;i<=m;i++)
	{
		getchar();
		scanf("%c",&c1);
		scanf("%c",&c2);
		scanf("%c",&c3);
		myvis[c1-'A']=myvis[c3-'A']=true;
		road[c1-'A'].push_back(c3-'A');
		bin[c3-'A']++;
		in[c3-'A']++;
		for(j=0;j<26;j++)
		{
			in[j]=bin[j];
			vis[j]=false;
		}
		for(j=0;j<n;j++)
			if(in[j]==0&&myvis[j]==true)
			{
				dfs(j);
				break;
			}
		if(flag1==true||j==n)
		{
			printf("Inconsistency found after %lld relations.",i);
			return 0;
		}
		if(dep==n)
		{
			printf("Sorted sequence determined after %lld relations: ",i);
			for(j=0;j<ans.size();j++)
				printf("%c",(char)'A'+ans[j]);
			printf(".");
			return 0;
		}
		dep=0;
		flag1=false;
		ans.clear();
	}
	printf("Sorted sequence cannot be determined.");
	return 0;
}
2021/11/8 16:34
加载中...