新手救助,为什么一直TLE啊
查看原帖
新手救助,为什么一直TLE啊
397094
sky998809楼主2023/9/11 22:39
#include<bits/stdc++.h>
using namespace std;

const int N = 500010;

int h[N], e[N], ne[N], idx;

inline int read(){//快读
    int s=0,w=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
    while(ch>='0'&&ch<='9')s=s*10+ch-48,ch=getchar();
    return s*w;
}

void add(int a, int b){ // 邻接表添加一条边
    e[idx] = b;

    int t = h[a], p = t;
    while(b > e[t] && t != -1){
        p = t;
        t = ne[t];
    }

    ne[idx] = t;
    if(p != t) ne[p] = idx;
    else h[a] = idx;
    idx++;
}

int main(){
    int t;
    t = read();

    while(t--){
        int n, m;
        n = read();
        m = read();

        memset(h, -1, sizeof h);
        idx = 0;

        for(int i=0;i<m;i++){
            int u, v;
            u = read();
            v = read();
            add(u, v);
        }

        for(int i=1;i<=n;i++){
            for(int j=h[i];j!=-1;j=ne[j]) printf("%d ", e[j]);
            printf("\n");
        }
    }

    return 0;
}

2023/9/11 22:39
加载中...