记录编号 613061 评测结果 AAAAAAAAAA
题目名称 3878.[省选 2023]火车站 最终得分 100
用户昵称 GravatarFakeNews 是否通过 通过
代码语言 C++ 运行时间 0.348 s
提交时间 2026-02-28 08:57:53 内存使用 5.18 MiB
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;

#define maxn 200005

#define inf 500005

int n,m,s;
int a[maxn],b[maxn];
bool ans[maxn],vis[maxn];

struct node{
    int u,v;
}num[maxn];

int l=inf;
int r=-inf;

int main(){
    
    freopen("station.in","r",stdin);
    freopen("station.out","w",stdout);
    
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    
    
    cin>>n>>m>>s;
    
    for(int i=1;i<=n;i++){
        a[i]=0;
        b[i]=inf;
    }
    
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        num[i].u=u,num[i].v=v;
        a[u]=max(v,a[u]),b[v]=min(u,b[v]);
        if(u<=s&&v>=s){
            l=min(l,u),r=max(r,v);
        }
    }
    
    for(int i=s-1;i>=l;i--){
        if(b[i]==inf){          
            continue; 
        }
        l=min(l,b[i]);
    } 
    
    for(int i=s+1;i<=r;i++){
        if(!a[i]){
            continue;
        }
        r=max(r,a[i]);
    }
    
    for(int i=1;i<=m;i++){
        if(num[i].u>=l&&num[i].u<s){
            ans[num[i].u]=true;
        }
        if(num[i].v<=r&&num[i].v>s){
            ans[num[i].v]=true;
        }
    }
    
    for(int i=1;i<=n;i++){
        if(ans[i]){
            cout<<i<<" ";
        }
    }
    
    
    return 0;
}