| 记录编号 |
613061 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
3878.[省选 2023]火车站 |
最终得分 |
100 |
| 用户昵称 |
FakeNews |
是否通过 |
通过 |
| 代码语言 |
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;
}