论出现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;
}