我真的是服了
样例全过,但是全部WA,不知道解决思路对不对,若思路正确,求调
#include<cstdio>
#include<queue>
#include<map>
#include<string>
#include<iostream>
#define MAXN 30
using namespace std;
int ls[MAXN][MAXN] = {0};
int k,sum = 0,cnt2 = 0;
map<int,int> p;
queue<int> list;
string paixu;
int panduanhang(int i,int n){
for(int j = 0;j<n;j++){
if(ls[j][i] == 1) return 1;
}
list.push(i);
cnt2++;
return 0;
}
void dengyu0(int i,int n){
for(int j = 0;j<n;j++){
if(ls[i][j] == 1)
{
ls[i][j] = 0;
panduanhang(j,n);
}
}
}
bool bukong(int n){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(ls[i][j] == 1) return true;
}
}
return false;
}
bool check(int n){
for(int i = 0;i<n;i++){
for(int j = 0;j<n;j++){
if(ls[i][j] == 1) return false;
}
}
return true;
}
int main(){
int n,m;//n 为字母数量,即为数组边界 ; m 是操作次数
scanf("%d%d",&n,&m);
char a,b,c;
int a1,b1,c1;
for(int i = 0 ;i<m;i++){
cin>>a>>c>>b;
a1 = a - 'A';b1 = b - 'A';
ls[a1][b1] = 1;
}
int cnt = 0;
int lalala114514 = 0;
while(panduanhang(lalala114514,n))
{
lalala114514++;
}
// cout<<lalala114514<<endl;
// cout<<list.front()<<endl;
while(paixu.size() < n && !list.empty()){
// cout<<list.front()<<endl;
// cout<<cnt<<endl;
paixu += (char)(list.front()+65);
dengyu0(list.front(),n);
list.pop();
cnt++;
}
if(paixu.size() == n){
printf("%s%d%s%s%c\n","Sorted sequence determined after ",cnt," relations: ",paixu.c_str(),'.');
return 0;
}
if(bukong(n)&&paixu.size()<n){
printf("%s%d%s\n","Inconsistency found after ",lalala114514," relations.");
return 0;
}
printf("%s\n","Sorted sequence cannot be determined.");
return 0;
}
这个题目输出好阴间啊