20WA求调
  • 板块P1347 排序
  • 楼主Statax
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/3/31 10:46
  • 上次更新2024/3/31 10:57:35
查看原帖
20WA求调
1113126
Statax楼主2024/3/31 10:46

样例都过了,hack过了,但只有20分!

#include<bits/stdc++.h>

using namespace std;
const int N=30;

int n,m;
int x,y;
int in_deg[N];
int out_deg[N];
int indeg[N],outdeg[N];
char a,b; 
string ans;
vector<int>G[N];

int topsort(){
	int cnt=0;ans="";
	queue<int>q;
	
	for(int i=1;i<=n;i++)
		if(!in_deg[i]&&out_deg[i])
			q.push(i),ans=char('A'+y-1)+ans;
			
	if(q.empty())return 0;
	if(q.size()>1)return 3;

	while(!q.empty()){
		int x=q.front();q.pop();
		cnt++;
		bool flag=0;
		for(auto y:G[x]){
			if(!(--in_deg[y])){
				if(flag)return 0;
				ans=char('A'+y-1)+ans;
				q.push(y),flag=1;
			}
		}
	}	
	
	if(cnt==n)return 1;
	else return 2;
}

int main(){
	cin>>n>>m;
	
	for(int i=1;i<=m;i++){
		cin>>a>>b>>b;
		x=a-'A'+1,y=b-'A'+1;
		G[y].push_back(x);	
		in_deg[x]++,out_deg[y]++;
		indeg[x]++,outdeg[y]++;
		int ret=topsort();

		if(!ret){
			printf("Inconsistency found after %d relations.\n",i);
			return 0;
		}else if(ret==1){
			printf("Sorted sequence determined after %d relations: ",i);
			cout<<ans<<".";
			return 0;
		}
		for(int j=1;j<=n;j++){
			in_deg[j]=indeg[j];
			out_deg[j]=outdeg[j];
		}
		
	
	}
	puts("Sorted sequence cannot be determined.");
	return 0;
}

2024/3/31 10:46
加载中...