题目数据范围是不是有错误,N=2e4+5为什么会MLE
查看原帖
题目数据范围是不是有错误,N=2e4+5为什么会MLE
1318046
Yuukiyo楼主2024/8/15 22:24
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
const int N=2e4+5;
int n,m,f[2*N];
struct node{
    int a,b,c;
}t[N];
int find(int x) {return f[x]==x ? x : f[x]=find(f[x]);}
bool cmp(node x,node y) {return x.c>y.c;}
int main() {
    scanf("%d %d",&n,&m);
    for (int i=1;i<=n;++i) f[i]=i;
    for (int i=1;i<=m;++i) scanf("%d %d %d",&t[i].a,&t[i].b,&t[i].c);
    sort(t+1,t+m+1,cmp);
    for (int i=1;i<=m;++i) {
		int a=t[i].a,b=t[i].b;
        int px=find(a),py=find(b);
        if (px==py) {
            printf("%d",t[i].c);
            return 0;
        }
        else {
			if (!f[a+n]) f[a+n]=py;
			else f[find(a+n)]=py;
			if (!f[b+n]) f[b+n]=px;
			else f[find(b+n)]=px;
		}
    }
    printf("0");
    return 0;
}
2024/8/15 22:24
加载中...