全WA,蒟蒻并不精通输入问题
RT,本机Ubuntu 18.04
以下为#1为例,正确答案100
一开始这么写的:
#include<iostream>
#include<cstdio>
using namespace std;
int fa[1000001],a,b,n,m,ans;
char c;
inline int find(int n){
if(fa[n]!=n) fa[n]=find(fa[n]);
return fa[n];
}
inline void unionn(int x,int y){
x=find(x),y=find(y);
fa[y]=x;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=(n<<1);++i){
fa[i]=i;
}
for(int i=1;i<=m;++i){
scanf("%*c%c%d%d",&c,&a,&b);
if(c=='F') unionn(a,b);
else{
unionn(a,n+b);
unionn(b,n+a);
}
}
for(int i=1;i<=n;i++){
if(fa[i]==i) ans+=1;
}
printf("%d\n",ans);
}
本机输出100
我一想,linux的换行符不是那个啥那个啥吗,可能不一样导致的
然后删掉%*c,又WA
然后用你谷IDE写成这样:
#include<iostream>
#include<cstdio>
using namespace std;
int fa[1000001],a,b,n,m,ans;
char c;
inline int find(int n){
if(fa[n]!=n) fa[n]=find(fa[n]);
return fa[n];
}
inline void unionn(int x,int y){
x=find(x),y=find(y);
fa[y]=x;
}
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=(n<<1);++i){
fa[i]=i;
}
scanf("%*c");
for(int i=1;i<=m;++i){
scanf("%c%d%d",&c,&a,&b);
if(c=='F') unionn(a,b);
else{
unionn(a,n+b);
unionn(b,n+a);
}
}
for(int i=1;i<=n;i++){
if(fa[i]==i) ans+=1;
}
printf("%d\n",ans);
}
IDE:100
评测姬:老子说是99就是99
WA..
然后不擅长输入的蒟蒻就发帖来问了...