rt,求修
#include "bits/stdc++.h"
using namespace std;
const int Xe = 30;
int n, m, pa[Xe];
vector <int> ve[Xe];
bool vis[Xe][Xe];
queue <int> q;
void dfs(int x){
if (pa[x]) dfs(pa[x]);
cout << char(x + 'A' - 1);
}
int bfs(int k){
int s[Xe];
memset(s, 0, sizeof(s));
s[0] = 1;
q.push(0);
while(!q.empty()){
int u = q.front();
q.pop();
for (int i = 0; i < ve[u].size(); i++){
int v = ve[u][i];
if (s[v] < s[u] + 1){
pa[n + 1] = v;
pa[v] = u;
s[v] = s[u] + 1;
q.push(v);
}
if (s[v] > n + 2){
cout << "Inconsistency found after " << k << " relations.";
return 0;
}
}
}
if (k == m && s[n + 1] != n + 2) cout << "Sorted sequence cannot be determined.";
if (s[n + 1] == n + 2){
cout << "Sorted sequence determined after " << k << " relations: ";
dfs(pa[n + 1]);
cout << ".";
return 0;
}
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++){
ve[0].push_back(i);
ve[i].push_back(n + 1);
}
for (int i = 1; i <= m; i++){
char a, b, c;
cin >> a >> b >> c;
if (!vis[a - 'A' + 1][c - 'A' + 1]){
ve[a - 'A' + 1].push_back(c - 'A' + 1);
vis[a - 'A' + 1][c - 'A' + 1] = 1;
}
bfs(i);
}
return 0;
}