求助输入!
查看原帖
求助输入!
215573
zythonc楼主2020/8/21 10:44

全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..

然后不擅长输入的蒟蒻就发帖来问了...

2020/8/21 10:44
加载中...