6 条题解

  • 1
    @ 2024-12-12 17:20:35

    给的时间限制是2s,感觉就是为了暴力用的。 无重环即可以一对多而不能多对一,循环找到door为0即可。

    #include<stdio.h>

    #include algorithm//加括号

    #define N 100005

    using namespace std;

    struct node

    {

    int door;

    int t;

    }s[N];

    int cmp(node a,node b)

    {

    if(a.t<b.t)

    {

    return 1;

    }

    return 0;

    }

    int main()

    {

    int n,q,z;

    scanf("%d %d",&n,&q);

    for(int i=1;i<=n;i++)

    {

    scanf("%d %d",&s[i].door,&s[i].t);

    }

    sort(s+1,s+n+1,cmp);

    while(q--)

    {

    scanf("%d",&z);

    if(s[z].door==0)

    { printf("0 %d\n",z);

    }

    else

    {

    int mm[N];

    for(int i=0;i<=N;i++)

    {

    mm[i]=-1;

    }

    int cnt=0;

    mm[cnt]=s[z].door;

    while(mm[cnt]!=0)

    {

    for(int i=1;i<=n;i++)

    {

    if(s[i].t==mm[cnt])

    {

    mm[++cnt]=s[i].door;

    break;

    }

    }

    } for(int j=cnt;j>=0;j--)

    {

    printf("%d ",mm[j]);

    }

    printf("%d\n",z);

    }

    }

    }

    信息

    ID
    964
    时间
    2000ms
    内存
    256MiB
    难度
    6
    标签
    递交数
    350
    已通过
    106
    上传者