1045. Funny Game

http://acm.timus.ru/problem.aspx?space=1&num=1045

简单博弈

代码:

#include<iostream>

#include<cstdio>

#include<cstring>

#include<string>

#include<vector>

#include<queue>

#include<map>

#include<stack>

#include<algorithm>

#include<cmath>



using namespace std;

//#pragma comment(linker,"/STACK:1000000000,1000000000")



#define LL long long



const int INF=0x3f3f3f3f;

const int N=1005;

int head[N],I;

struct node

{

    int j,next;

}side[N*2];

void Add(int i,int j)

{

    side[I].j=j;

    side[I].next=head[i];

    head[i]=I++;

}

int dfs(int x,int pre)

{

    int k=0;

    for(int t=head[x];t!=-1;t=side[t].next)

    {

        int l=side[t].j;

        if(l==pre)

        continue;

        if(dfs(l,x)==0)

        {

            if(k==0||l<k)

            k=l;

        }

    }

    return k;

}

int main()

{

    //freopen("data.txt","r",stdin);

    int n,s;

    while(cin>>n>>s)

    {

       memset(head,-1,sizeof(head));

       I=0;

       for(int i=1;i<n;++i)

       {

           int l,r;

           cin>>l>>r;

           Add(l,r);

           Add(r,l);

       }

       int k=dfs(s,-1);;

       if(k)

       cout<<"First player wins flying to airport "<<k<<endl;

       else

       cout<<"First player loses"<<endl;

    }

    return 0;

}

 

你可能感兴趣的:(game)