社区讨论
玄关!!!
P1347[ECNA 2001] 排序参与者 2已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @lyb6731e
- 此快照首次捕获于
- 2024/07/07 14:26 2 年前
- 此快照最后确认于
- 2024/07/07 16:29 2 年前
蒟蒻最后一个过不了,求调,谢谢巨佬!
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,ans,num;
vector<int> vec[105];
int rudu[105],a[105];
bool st[105];
int get(char ch){
return ch-'A';}
bool topo(int r){
queue<int>q;
int num=0;
bool flag=1;
int t[105];
for(int i=0;i<n;i++){
t[i]=rudu[i];
if(!rudu[i]){
q.push(i);
st[i]=1;}}
while(q.size()){
if(q.size()>1){
flag=0;}
int k=q.front();
a[num++]=k;
q.pop();
for(int i=0;i<vec[k].size();i++){
t[vec[k][i]]--;}
for(int i=0;i<n;i++){
if(!t[i]&&!st[i]){
q.push(i);
st[i]=1;}}}
if(num < n){return 0;}
if(flag&&!ans){ans=r;}
return 1;}
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
char c[3];
cin>>c[0]>>c[1]>>c[2];
int x=get(c[0]),y=get(c[2]);
vec[x].push_back(y);
rudu[y]++;
if(!topo(i)){
cout<<"Inconsistency found after "<<i<<" relations.";
return 0;}
memset(st,false,sizeof st);}
if(ans){
cout<<"Sorted sequence determined after "<<ans<<" relations: ";
for(int i=0;i<n;i++)
cout<<char(a[i]+'A');
cout<<".";}
else{cout<<"Sorted sequence cannot be determined.";}
return 0;}
qwq
回复
共 1 条回复,欢迎继续交流。
正在加载回复...