求助大佬,为何会WA(只有一个点AC)?
#include<iostream>
using namespace std;
int n,m,a[20010],b[20010],cnt1,cnt2,cnt3,cnt;
char tmp;
bool hd[10010],hud[10010];//hd:删掉之前某一行可能成为最小值,hud:不删之前的行可能成为最小值
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
hd[i]=true;
hud[i]=true;
}
for(int i=0;i<m;){
cin>>a[i]>>tmp>>b[i];
hd[a[i]]|=hd[b[i]];
hd[b[i]]=false;
hd[a[i]]|=hud[a[i]];
hd[b[i]]|=hud[b[i]];
if(i) hd[a[i-1]]|=hud[a[i-1]];
if(i) hd[b[i-1]]|=hud[b[i-1]];
hud[a[i]]|=hud[b[i]];
hud[b[i]]=false;
if(++i<m) cin>>tmp;
}
for(int i=2;i<=n;i++){
if(hd[i]){
if(hud[i]) cnt1++;
else cnt2++;
}else if(hud[i]) cnt3++;
}
cout<<cnt2+(cnt1+cnt3)*2<<endl;
return 0;
}