wrong output format
查看原帖
wrong output format
218999
啷里个浪楼主2021/9/18 15:41

论出现Wrong Answer. wrong output format Unexpected end of file - int32 expected怎么办?

有可能是输出的时候输出错了,也会出现这种情况。也就是答案错了。

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
using namespace std;

//const int N=1e5+10;
int n,m,k,vis[100010],fa[100010],ans;
struct node{
	int from,to,val,id,flag;
	bool operator <(const node &b)const{
		return val<b.val;
	}
}a[400010];
struct nodei{
	int from,to,val,id;
	bool operator <(const nodei &b)const{
		return val<b.val;
	}
}q[200010];

inline int read(){
	int s=0,w=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')w=-1;
		ch=getchar();
	}
	while(ch<='9'&&ch>='0'){
		s=s*10+ch-'0';
		ch=getchar();
	}
	return s*w;
}
int find(int x){
	return fa[x]==x?x:fa[x]=find(fa[x]);
}
void kruskal(){
	ans=0;
	for(int i=1;i<=n;i++)fa[i]=i;
	//memset(vis,0,sizeof(vis));
	int ki=0;
	for(int i=1;i<=m;i++){
		//if(q[i].val>maxn)continue;
		int xi=find(q[i].from),yi=find(q[i].to);
		if(xi==yi)continue;
		fa[xi]=yi;
		++ki;
		vis[q[i].id]=1;
		ans=max(ans,q[i].val);
		if(ki==k)break;
	}
	//if(ki<k)return false;
	for(int i=1;i<=m*2;i++){
		//if(a[i].val>maxn)continue;
		int xi=find(a[i].from),yi=find(a[i].to);
		if(xi==yi)continue;
		fa[xi]=yi;
		++ki;
		vis[a[i].id]=a[i].flag;
		ans=max(ans,a[i].val);
		//if(ki==n-1)return true;
		if(ki==n-1)break;
	}
	return ;
	//return false;
}

int main(){
	n=read();k=read();m=read()-1;
	for(int i=1;i<=m;i++){
		a[i].from=a[i+m].from=q[i].from=read();
		a[i].to=a[i+m].to=q[i].to=read();
		a[i].val=q[i].val=read();
		a[i+m].val=read();
		q[i].id=a[i].id=a[i+m].id=i;
		a[i].flag=1;a[i+m].flag=2;
		//ans=max(a[i].val,a[i+m].val);
	}
	sort(a+1,a+2*m+1);
	sort(q+1,q+m+1);
	kruskal();
	cout<<ans<<endl;
	for(int i=1;i<=m;i++)if(vis[i])printf("%d %d\n",i,vis[i]);
  //比如这里:开始这里是for(int i=1;i<=n;i++)
	return 0;
}
2021/9/18 15:41
加载中...