50pts求调
查看原帖
50pts求调
862827
_LogicFish_楼主2025/1/23 20:24
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<vector>

using namespace std;
#define int long long
struct node{
	node(){}
	node(int _a,int _b,int _id,int _c,int _d)
	:a{_a},b{_b},id{_id},kind{_c},pri{_d} {}
	int a,b,id,kind,pri;
	bool operator <(const node other) const
	{
		return pri<other.pri;
	}
};
struct Ans{
	int a,b,id,k,p;
	bool operator <(const Ans other) const
	{
		return id<other.id;
	}
};

int n,k,m,ans;
int x,y,a,b;
vector<node>mp;
vector<Ans>vc;
int fa[10005];
bool bk[40005];
int find(int x)
	{ return fa[x]==x?x:fa[x]=find(fa[x]); }
void Krus(int x)
{
	int cnt=(x==1)?0:k;
	for(int i=0;i<mp.size();i++)
	{
		if(find(mp[i].a)!=find(mp[i].b))
		{
			if(x==1)
			{
				if(mp[i].kind==1)
				{
					bk[i]=1,cnt++,
					fa[find(mp[i].a)]=find(mp[i].b);
					if(cnt==k) return;
				}
			}
			else if(!bk[i])
			{
				bk[i]=1,cnt++,
				fa[find(mp[i].a)]=find(mp[i].b);
				if(cnt==n-1) return;
			}
		}
	}
}
signed main()
{
	cin>>n>>k>>m;
	for(int i=1;i<=n;i++) fa[i]=i;
	for(int i=1;i<m;i++)
	{
		cin>>x>>y>>a>>b,
		mp.push_back(node(x,y,i,1,a)),
		mp.push_back(node(x,y,i,2,b));
	}
	sort(mp.begin(),mp.end());
	Krus(1),Krus(0);
	for(int i=1;i<=m*2;i++)
		if(bk[i])
		{
			node v=mp[i];
			vc.push_back({v.a,v.b,v.id,v.kind,v.pri});
		}
	sort(vc.begin(),vc.end());
	for(auto i:vc)
		ans=max(ans,i.p);
	printf("%d\n",ans);
	for(auto i:vc)
		printf("%d %d\n",i.id,i.k);
	return 0;
}

WA on #3, #4, #5, #6, #10 :<
这个没看懂:
Wrong Answer.wrong output format Unexpected end of file - int32 expected
啥意思

2025/1/23 20:24
加载中...