怎么总是TLE啊。。。。
查看原帖
怎么总是TLE啊。。。。
517637
瀛洲仙子楼主2023/10/5 23:07
#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
int read()
{
    int x=0;char ch=' ';
    while(!isdigit(ch))
        ch=getchar();
    while(isdigit(ch))
    {
        x=x*10+(ch-'0');
        ch=getchar();
    }
    return x;
}
void write(int x)
{
    if(x>9)write(x/10);
    putchar(x%10+'0');
}
////////////////////////////////////
vector<int>edge[500005];
int deg[500005];
void add(int i,int j)
{
    edge[i].push_back(j);
    ++deg[i];
}
void bianli(int num)
{
    for(int i=1;i<=num;++i)
    {
        for(int j=0;j<edge[i].size();++j)
            {write(edge[i][j]);putchar(' ');}
        putchar('\n');
    }
}
int tt[500005];
void merge(vector<int>&lis,int l,int r)
{
    if(l>=r)return;
    int mid=(l+r)>>1;
    merge(lis,l,mid);
    merge(lis,mid+1,r);
    int i=l,k=l,j=mid+1;
    while(i<=mid and j<=r)
    {
        if(lis[i]>lis[j])
            tt[k++]=lis[j++];
        else tt[k++]=lis[i++];
    }
    while(i<=mid)tt[k++]=lis[i++];
    while(j<=r)tt[k++]=lis[j++];
    for(int i=l;i<=r;++i)lis[i]=tt[i];
}
int main()
{
    int t;cin>>t;while(t--)
    {
        memset(deg,0,sizeof(deg));
        int n=read(),m=read();
        for(int i=1;i<=n;++i)
            vector<int>().swap(edge[i]);
        while(m--)
        {
            int u=read(),v=read();
            add(u,v);
        }
        for(int i=1;i<=n;++i)
            //sort(edge[i].begin(),edge[i].end());
            merge(edge[i],0,edge[i].size()-1);
        bianli(n);
    }
}
2023/10/5 23:07
加载中...