所有点都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;
}