毁了啊孩子们,十一个点全RE
  • 板块P1347 排序
  • 楼主Wh1t3zZlo
  • 当前回复4
  • 已保存回复4
  • 发布时间2024/9/25 10:42
  • 上次更新2024/9/25 12:51:10
查看原帖
毁了啊孩子们,十一个点全RE
1232566
Wh1t3zZlo楼主2024/9/25 10:42

所有点都RE,不知道原因,数组也开大了,字符读入的时候招着第一个题解改了一下也不行,就连hack数据也RE了,但是我把hack数据下载了自己本地跑是可以的而且答案是对的,但是交上去就是RE5555555555555555555555555555555555555555555,求调教,万分感谢

#include<iostream>
#include<vector>
#include<queue>
#include<string>
using namespace std;
const int N = 300;
vector<int>e[N],p;
int in[N],vis[N],n,m,now;

int toop()
{
	queue<int>q;
	int inn[N],cnt=0;
	for (int i = 1; i <= 26; i++)
	{
		inn[i] = in[i];
		if (in[i] == 0&&vis[i])
		{
			cnt++;
			q.push(i);
			p.push_back(i);
		}
	}
	if (cnt > 1) return 0;
	while (q.size())
	{
		int delta = 0;
		int u = q.front(); q.pop();
		for (int v : e[u])
		{
			inn[v]--;
			if (inn[v] == 0)
			{
				delta++;
				q.push(v);
				p.push_back(v);
			}
		}
		if (delta > 1) return 0;
		cnt += delta;
	}
	if (cnt == n)
	{
		return 1;
	}
	else if (cnt != now)
	{
		return 2;
	}
}

int main()
{
	cin >> n >> m;
	for (int i = 1; i <= m; i++)
	{
		p.clear();
		string d;
		cin >> d;
		char a = d[0], c = d[2];
		e[a - 64].push_back(c - 64);
		in[c - 64]++;
		if (!vis[a - 64]) now++;
		if (!vis[c - 64]) now++;
		vis[a - 64] = 1; vis[c - 64] = 1;
		if (toop() == 1)
		{
			cout << "Sorted sequence determined after " << i << " relations: ";
			for (int i = 0; i < p.size(); i++) cout << char(p[i]+64);
			return 0;
		}
		else if (toop() == 2)
		{
			cout << "Inconsistency found after " << i <<" relations.";
			return 0;
		}
	}
	cout << "Sorted sequence cannot be determined.";

	return 0;
}
2024/9/25 10:42
加载中...