第一次
```cpp
#include<bits/stdc++.h>
#define maxn 20005
#define maxm 10005
using namespace std;
struct node {
int from;
int to;
int w_1;
int w_2;
int bh;
}e[maxn];
int ans [maxm];
int n,m,k,ans_s;
int f[maxn];
//以上没错
bool cmp1 (node a,node b) { return a.w_1 < b.w_1; }
bool cmp2 (node a,node b) { return a.w_2 < b.w_2; }
int find (int x) { return f[x] == x ? x : f[x] = find(f[x]); }//并查集
//以上没错
void init () {
scanf ("%d%d%d",&m,&k,&n);
for (int i = 1;i < n;i ++){
scanf ("%d%d%d%d",&e[i].from,&e[i].to,&e[i].w_1,&e[i].w_2);
e[i].bh = i;
}
for (int i = 1;i <= m;i ++) f[i] = i;
}
//以上没错
void work () {
sort (e + 1,e + n,cmp1);
for (int i = 1;i < n;i ++) {
int u = find (e[i].from);
int v = find (e[i].to);
if (u != v) {
ans_s = e[i].w_1;
f[u] = v;
k--;
ans[e[i].bh] = 1;
if (k == 0) {
k = i+1;
break;
}
}
}
sort (e + k,e + n,cmp2);
for (int i = k;i < n;i ++) {
int u = find (e[i].from);
int v = find (e[i].to);
if (u != v) {
ans_s = max(e[i].w_2,ans_s);
f[u] = v;
ans[e[i].bh] = 2;
}
}
printf ("%d\n",ans_s);
for (int i = 1;i < n;i ++)
if (ans[i]) printf ("%d %d\n",i,ans[i]);
return;
}
int main () {
init ();
work ();
return 0;
}
```
by yzyxbw @ 2019-05-30 22:33:00
第二次
```cpp
#include<bits/stdc++.h>
using namespace std;
struct node {
int from,to,w_1,w_2,bh;
}e[20005];
int n,m,k,ans_s,f[10005],ans[20005];
//以上没错
bool cmp1 (node a,node b) { return a.w_1 < b.w_1; }
bool cmp2 (node a,node b) { return a.w_2 < b.w_2; }
int find (int x) { return f[x] == x ? x : f[x] = find(f[x]); }//并查集
//以上没错
void init () {
scanf ("%d%d%d",&m,&k,&n);
for (int i = 1;i < n;i ++){
scanf ("%d%d%d%d",&e[i].from,&e[i].to,&e[i].w_1,&e[i].w_2);
e[i].bh = i;
}
for (int i = 1;i <= m;i ++) f[i] = i;
}
//以上没错
void work () {
sort (e + 1,e + n,cmp1);
for (int i = 1;i < n;i ++) {
int u = find (e[i].from);
int v = find (e[i].to);
if (u != v) {
ans_s = e[i].w_1;
f[u] = v;
k--;
ans[e[i].bh] = 1;
if (k == 0) {
k = i+1;
break;
}
}
}
sort (e + k,e + n,cmp2);
for (int i = k;i < n;i ++) {
int u = find (e[i].from);
int v = find (e[i].to);
if (u != v) {
ans_s = max(e[i].w_2,ans_s);
f[u] = v;
ans[e[i].bh] = 2;
}
}
printf ("%d\n",ans_s);
for (int i = 1;i < n;i ++)
if (ans[i]) printf ("%d %d\n",i,ans[i]);
return;
}
int main () {
init ();
work ();
return 0;
}
```
by yzyxbw @ 2019-05-30 22:33:29
SPJ这么玄学的吗
by yzyxbw @ 2019-05-30 22:33:51
@[1719lu](/space/show?uid=78487) 太强啦!!!
by Achtoria @ 2019-05-30 22:36:54
%%%%%
by Achtoria @ 2019-05-30 22:37:49
@[chen_zhang](/space/show?uid=78386) 别%了,没意思,我们都弱
by yzyxbw @ 2019-05-30 22:38:27
@[1719lu](/space/show?uid=78487) 已经AC了,这不重要吧……
by AC自动机_ @ 2019-05-30 22:47:56
@[AC自动机_](/space/show?uid=185035) 就是单纯吐槽SPJ
by yzyxbw @ 2019-05-30 22:49:15
我这个连样例都过不了
by yzyxbw @ 2019-05-30 22:49:38