20分求调
  • 板块P1347 排序
  • 楼主Oldtoswim
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/7/23 15:19
  • 上次更新2025/7/23 19:09:52
查看原帖
20分求调
1333229
Oldtoswim楼主2025/7/23 15:19
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll a[210],b[210],c[210],d[210],pd,n,t;
vector<ll>my[151];
void dfs(ll x,ll y){
	d[x]=1;
	if(pd==-1){
		return ;
	}
	if(pd==n){
		return ;
	}
	b[x]=1;
	for(ll i=0;i<my[x].size();i++){
		ll j=my[x][i];
		if(b[j]==1){
			pd=-1;
			return ;
		}
		if(b[j]==0){
			dfs(j,y+1);
		}
	}
	b[x]=0;
		if(y==n){
			pd=n;
		}
		if(pd==n&&pd!=-1){
			c[++t]=x;
			return ;
		}
}
void shuchu(){
	for(ll i=t;i>=1;i--){
		cout<<char(c[i]+64);
	}
	cout<<".";
	return ;
}
int main(){
	ll m;
	cin>>n>>m;
	for(ll i=1;i<=m;i++){
	char uu,vv,w;
	cin>>uu>>w>>vv;
	ll u=uu-64,v=vv-64;
	my[u].push_back(v);
	a[v]++;
	pd=-2;
	memset(d,0,sizeof(d));
	for(ll j=1;j<=n;j++){
		if(a[j]==0){
			memset(b,0,sizeof(b));
			memset(c,0,sizeof(c));
			pd=0;
			t=0;
			dfs(j,1);
			if(pd==1){
			printf("Inconsistency found after %lld relations.",i);
			return 0;	
			}
			if(pd==-1){
				printf("Sorted sequence determined after %lld relations:",i);
				shuchu();
				return 0;
			}
		}
	}
	for(ll j=1;j<=n;j++){
		if(d[j]==0){
			printf("Inconsistency found after %lld relations.",i);
			return 0;
		}
	}
}
	printf("Sorted sequence cannot be determined.");
	return 0;
}
2025/7/23 15:19
加载中...