0分c++
  • 板块P1347 排序
  • 楼主___njr___
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/5/8 13:51
  • 上次更新2023/10/23 16:21:15
查看原帖
0分c++
602624
___njr___楼主2023/5/8 13:51
#include <bits/stdc++.h>

using namespace std;



int cnt[1000];

bool v1[1000][1000];//谁大于我

int tt[1000];

int n;

int t = 0;
set<int>set_;
inline int solve() {

	memcpy(tt,cnt,sizeof(cnt));

	queue<int>st;
	set<int>mp;
	for(int i = 0; i < set_.size() ; ++ i) {

		int idx = -1;

		for(int j = 0; j < n ; ++j) {

			if(!cnt[i]&&set_.find(j)!=set_.end()){idx=j;break;}

		}

		if(~idx){if(mp.find(idx)!=mp.end())for(int i = 0; i < n;++i)if(v1[idx][i])--tt[i];mp.insert(idx);}

		else if(t!=1){

			printf("Inconsistency found after %d relations." , t);

			exit(0);

		}

		st.push(idx);

	}

	if(st.size()==n&&t!=1){

		printf("Sorted sequence determined after %d relations:" , t);

		while(st.size()) {

			putchar(st.front()+65);

			st.pop();

		}
		exit(0);

	}

	return st.size();

}

int main()

{

	int m;

	cin>>n>>m;

	while(m--) {

		char a,b;

		scanf("%c<%c",&a,&b);

		++t;

		if(v1[a][b]==false)cnt[b]++;

		v1[a][b]=true;
		set_.insert(a);
		set_.insert(b);
		solve();

	}

	printf("Sorted sequence cannot be determined.");

	return 0;

}
2023/5/8 13:51
加载中...