86pts #5 WA求助!
查看原帖
86pts #5 WA求助!
741415
XaoWa118楼主2023/8/27 22:17

我也不知道怎么水到86的

#include <bits/stdc++.h>
using namespace std;

struct tt{
	int a=0,b=0,v=0;
};

bool cmp(tt a,tt b){
	return a.v>b.v;
}

int father[100005];

int find(int a){
	return (father[a]==a) ? a : father[a]=find(father[a]);
}

int main(){
	//freopen("test.in","r",stdin);
	//freopen("test.out","w",stdout);
    int n, k, m;
    cin >> n >> k >> m;
    tt sn[k];
	for(int i=0;i<k;i++){
		father[i]=i;
		cin>>sn[i].a>>sn[i].b>>sn[i].v;
        sn[i].v = !sn[i].v;
        //cout << sn[i].v << endl;
    }
    for(int i=k;i<n;i++){
        father[i] = i;
    }
    sort(sn, sn + k, cmp);
    int a, i, sum = 0;
    vector<int> ans;
    for(i=0,a=0;a<n-1,i<k;i++){
        //cout << sum << " " << m << " " << (sum >= m) << endl;
        if(sum>=m && sn[i].v==1){
            continue;
        }
        int va = find(sn[i].a), vb = find(sn[i].b);
        if(va != vb){
            father[vb] = va;
            sum+=sn[i].v;
            ans.push_back(i);
            a++;
		}
	}
    if(sum<m){
        cout << "no solution";
        return 0;
    }
    if(a<n-1){
        cout << "no solution";
        return 0;
    }
    for (int i = 0; i < ans.size();i++){
        cout << sn[ans[i]].a << " " << sn[ans[i]].b << " " << !sn[ans[i]].v << endl;
    }
    return 0;
}
2023/8/27 22:17
加载中...