• Brexit Gym


    题目链接:Brexit

    vector的使用(vector存边),巧用queue,相当于Bfs

     1 /* */
     2 # include <iostream>
     3 # include <cstdio>
     4 # include <cstring>
     5 # include <string>
     6 # include <memory>
     7 # include <cstdlib>
     8 # include <cmath>
     9 # include <climits>
    10 # include <cctype>
    11 # include <cassert>
    12 # include <utility>
    13 # include <deque>
    14 # include <queue>
    15 # include <stack>
    16 # include <vector>
    17 # include <bitset>
    18 # include <set>
    19 # include <map>
    20 # include <functional>
    21 # include <algorithm>
    22 using namespace std;
    23  
    24 # define lson l,m,rt<<1
    25 # define rson m+1,r,rt<<1|1
    26 # define lowbit(x)(x&(-x))
    27 # define lcm(a,b)(a*b/__gcd(a,b))
    28 typedef long long ll;
    29 const ll mod=1e9+7;
    30 const int maxn=2e5+10;
    31 const double eps=1e-18;
    32 const double pi=acos(-1.0);
    33 int n, m, c, l;
    34 int de[maxn];
    35 vector<int>nex[maxn];
    36 queue<int>qu;
    37 int flag[maxn];
    38  
    39 int main()
    40 {
    41     int t;
    42     while( ~ scanf("%d%d%d%d", &n, &m, &c, &l) )
    43     {
    44         for(int i=1; i<=n; i++ )
    45         {
    46             nex[i].clear();
    47             de[i]=0;
    48             flag[i]=0;
    49         }
    50  
    51         while( !qu.empty() )
    52             qu.pop();
    53         for(int i=1; i<=m; i++ )
    54         {
    55             int u, v;
    56             scanf("%d%d", &u, &v);
    57             nex[u].push_back(v);
    58             nex[v].push_back(u);
    59             de[u]++;
    60             de[v]++;
    61         }
    62  
    63         flag[l]=1;
    64         qu.push(l);
    65         while( !qu.empty() )
    66         {
    67             int cur=qu.front();
    68             qu.pop();
    69             for(int i=0; i<nex[cur].size(); i++ )
    70             {
    71                 de[nex[cur][i]]--;
    72                 if(  de[nex[cur][i]]<=nex[nex[cur][i]].size()/2 && flag[nex[cur][i]]==0 )
    73                 {
    74                     flag[nex[cur][i]] = 1;//避免重复入栈
    75                     qu.push(nex[cur][i]);
    76                 }
    77             }
    78         }
    79         if( flag[c]==1 )
    80             cout<<"leave"<<endl;
    81         else
    82             cout<<"stay"<<endl;
    83     }
    84     return 0;
    85 }
  • 相关阅读:
    Redis 持久化总结
    Redis 持久化
    redis.conf的详细说明:
    linux 下 redis 安装
    redis 简介
    小心,Nginx 上传文件大小有限制!
    PSP总结报告
    作业20181204-1 每周例行报告
    对团队成员公开感谢博客
    作业20181127-2 每周例行报告
  • 原文地址:https://www.cnblogs.com/wsy107316/p/11390676.html
Copyright © 2020-2023  润新知