什么东西???

P2323 [HNOI2006] 公路修建问题

第一次 ```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


|