样例全过但是爆0
  • 板块P1347 排序
  • 楼主SmartCirno
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/6/5 16:10
  • 上次更新2024/6/5 19:02:29
查看原帖
样例全过但是爆0
1137152
SmartCirno楼主2024/6/5 16:10
#include <iostream>
#include <cstdio>
#include <vector>
#include <queue>
using namespace std;
int n,m,_ind[30];
vector<int> g[30];
int toposort(int t)
{
	queue<int> q;
	vector<int> ans;
	int ind[30];
	for(int i=0;i<t;i++)
	{
		ind[i]=_ind[i];
		if(ind[i]==0)q.push(i);
	}
	while(!q.empty())
	{
		int v=q.front();
		for(int i:g[v])
		{
			if(--ind[i]==0)q.push(i);
		}
		ans.push_back(v);
		q.pop();
	}

	if(ans.size()==n)
	{
		printf("Sorted sequence determined after %d relations: ",t);
		for(int i=0;i<n;i++)cout<<(char)(ans[i]+'A');
		printf(".");
		return -1;
	}
	else if(ans.size()<t)
	{
		printf("Inconsistency found after %d relations.",t);
		return -1;
	}
	else return 1;
}

int main()
{
	cin>>n>>m;
	for(int i=1;i<=m;i++)
	{
		string s;
		cin>>s;
		g[s[0]-'A'].push_back(s[2]-'A');
		_ind[s[2]-'A']++;

		if(toposort(i)==-1)return 0;
		else continue;
	}
	printf("Sorted sequence cannot be determined.");
	return 0;
}

2024/6/5 16:10
加载中...