码迷,mamicode.com
首页 > 移动开发 > 详细

移动游戏By HYJ

时间:2018-02-09 15:20:10      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:algo   set   pac   inline   putchar   return   string   ios   sizeof   

技术分享图片

暴力求SG函数即可,记忆化贼方便

/*program from Wolfycz*/
#include<cmath>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#define inf 0x7f7f7f7f
using namespace std;
typedef long long ll;
typedef unsigned int ui;
typedef unsigned long long ull;
inline int read(){
    int x=0,f=1;char ch=getchar();
    for (;ch<‘0‘||ch>‘9‘;ch=getchar())  if (ch==‘-‘)    f=-1;
    for (;ch>=‘0‘&&ch<=‘9‘;ch=getchar())    x=(x<<1)+(x<<3)+ch-‘0‘;
    return x*f;
}
inline void print(int x){
    if (x>=10)     print(x/10);
    putchar(x%10+‘0‘);
}
const int N=1e4,M=1e5;
int pre[M+10],now[N+10],child[M+10],tot;
int can[N+10];
int n,m;
void join(int x,int y){pre[++tot]=now[x],now[x]=tot,child[tot]=y;}
void dfs(int x){
    if (can[x]!=-1) return;
    bool flag=0;
    for (int p=now[x],son=child[p];p;p=pre[p],son=child[p]){
        dfs(son);
        if (!can[son])  flag=1;
    }
    can[x]=flag;
}
void init(){
    tot=0;
    memset(now,0,sizeof(now));
    memset(can,-1,sizeof(can));
}
int main(){
    for (int Data=read();Data;Data--){
        init();
        n=read(),m=read(),can[n]=0;
        for (int i=1;i<=m;i++){
            int x=read(),y=read();
            join(x,y);
        }
        dfs(1);
        printf(can[1]?"yes":"no");
        putchar(‘\n‘);
    }
    return 0;
}

移动游戏By HYJ

标签:algo   set   pac   inline   putchar   return   string   ios   sizeof   

原文地址:https://www.cnblogs.com/Wolfycz/p/8434304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!