Brexit Gym - 101490C
2024-08-28 08:43:21
题目链接:Brexit
vector的使用(vector存边),巧用queue,相当于Bfs
/* */
# include <iostream>
# include <cstdio>
# include <cstring>
# include <string>
# include <memory>
# include <cstdlib>
# include <cmath>
# include <climits>
# include <cctype>
# include <cassert>
# include <utility>
# include <deque>
# include <queue>
# include <stack>
# include <vector>
# include <bitset>
# include <set>
# include <map>
# include <functional>
# include <algorithm>
using namespace std;
# define lson l,m,rt<<
# define rson m+,r,rt<<|
# define lowbit(x)(x&(-x))
# define lcm(a,b)(a*b/__gcd(a,b))
typedef long long ll;
const ll mod=1e9+;
const int maxn=2e5+;
const double eps=1e-;
const double pi=acos(-1.0);
int n, m, c, l;
int de[maxn];
vector<int>nex[maxn];
queue<int>qu;
int flag[maxn];
int main()
{
int t;
while( ~ scanf("%d%d%d%d", &n, &m, &c, &l) )
{
for(int i=; i<=n; i++ )
{
nex[i].clear();
de[i]=;
flag[i]=;
}
while( !qu.empty() )
qu.pop();
for(int i=; i<=m; i++ )
{
int u, v;
scanf("%d%d", &u, &v);
nex[u].push_back(v);
nex[v].push_back(u);
de[u]++;
de[v]++;
}
flag[l]=;
qu.push(l);
while( !qu.empty() )
{
int cur=qu.front();
qu.pop();
for(int i=; i<nex[cur].size(); i++ )
{
de[nex[cur][i]]--;
if( de[nex[cur][i]]<=nex[nex[cur][i]].size()/ && flag[nex[cur][i]]== )
{
flag[nex[cur][i]] = ;//避免重复入栈
qu.push(nex[cur][i]);
}
}
}
if( flag[c]== )
cout<<"leave"<<endl;
else
cout<<"stay"<<endl;
}
return ;
}
最新文章
- [WCF编程]13.并发:服务并发模式
- Javac 手动编译时,出现乱码或编码格式问题
- String类StringBuffer类与StringBuilder类gc垃圾回收
- 在.net桌面程序中自定义鼠标光标
- 简单的session共享的封装
- Python 元组知识点
- NSPredicate 根据谓语动词 进行 模糊查询
- JMS - ExceptionListener
- CI分支kohana在线文档
- SVN Access to &#39;/svn/Test/!svn/me&#39; forbidden,不能更新解决办法
- Django的ORM实现数据库事务操作
- android Handler机制之ThreadLocal详解
- MongoDB 3.0新增特性一览
- 15个HTML元素方法!
- 微信小程序如何引入外部字体库iconfont的图标
- Python RabbitMQ RPC实现
- jenkins 常见问题汇总
- js字符串三个编码的区别
- shell 多重条件判断
- 【BZOJ2120】数颜色