我真的不是标题党
调了一个晚上了老是剩个点Unexpected end of file-int32 expected.
看了下本题讨论区发现不少人也有这种情况。
但是他们又莫名其妙地自己调好了,也没有说是怎么做到的。(有兴趣者自己翻本题讨论区)
太诡异了吧
现在我只求求有个dalao能帮我解决这个问题
附代码:P2323
#include <bits/stdc++.h>
#define rei register int
#define N 40010
using namespace std;
int n, m, k, f[N], ans, sum, cnt;
struct edge
{
int x, y, c1, c2, num;
} a[N], b[N];
struct arr
{
int num, lev;
}q[N], out[N];
inline int read()
{
int x = 0, f = 1; char ch = getchar();
while (!isdigit(ch)) {if (ch == '-') f = -f; ch = getchar();}
while (isdigit(ch)) {x = x * 10 + ch - 48; ch = getchar();}
return x * f;
}
inline bool cmp1(const edge &a, const edge &b) {return a.c1 < b.c1;}
inline bool cmp2(const edge &a, const edge &b) {return min(a.c1, a.c2) < min(b.c1, b.c2);}
inline bool cmpArr(const arr &a, const arr &b) {return a.num < b.num;}
inline int find(int x)
{
if (f[x] != x) f[x] = find(f[x]);
return f[x];
}
int main()
{
//freopen("a.txt", "r", stdin);
n = read(); k = read(); m = read();
for (rei i = 1; i < m; i++)
{
b[i].x = a[i].x = read();
b[i].y = a[i].y = read();
b[i].c1 = a[i].c1 = read();
b[i].c2 = a[i].c2 = read();
a[i].num = b[i].num = i;
}
for (rei i = 1; i <= n; i++) f[i] = i;
sort(a + 1, a + m + 1, cmp1);
sort(b + 1, b + m + 1, cmp2);
for (rei i = 1, x1, x2; sum < k && sum < n - 1; i++)
{
x1 = find(a[i].x);
x2 = find(a[i].y);
if (x1 != x2)
{
f[x1] = x2;
sum++;
ans = max(ans, a[i].c1);
q[++cnt].num = a[i].num;
q[cnt].lev = 1;
}
}
if (sum >= n - 1)
{
printf("%d\n", ans);
return 0;
}
for (rei i = 1, x1, x2; sum < n - 1; i++)
{
x1 = find(b[i].x);
x2 = find(b[i].y);
if (x1 != x2)
{
f[x1] = x2;
sum++;
ans = max(ans, b[i].c2);
q[++cnt].num = b[i].num;
if (b[i].c2 < b[i].c1)
q[cnt].lev = 2;
else
q[cnt].lev = 1;
}
}
sort(q + 1, q + 1 + cnt, cmpArr);
printf("%d\n", ans);
for (rei i = 1; i <= cnt; i++)
printf("%d %d\n", q[i].num, q[i].lev);
return 0;
}