码迷,mamicode.com
首页 > 其他好文 > 详细

Uva 10557 XYZZY

时间:2015-09-08 18:36:16      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=1498

题意的意思是给你n个房间,每个房间有一个价值,每个房间可以通向一些其他的房间,然后每个房间可以访问多次= =里面的价值也可以多次取,问你是否能够从1房间走到n房间,走的路程中价值要大于0,初始的价值为100。。

这题说到底还是搜索。。。。但是当图中存在正环的时候,那么就可以直接从搜索所有路径看是否存在到终点的路径,如果不存在的话,就老老实实搜索是否能够保持在大于0的价值走到终点

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<vector>
using namespace std;
int n;
int a[150];
int vis[150];
int d[150];
vector<int>V[150];
int dfs(int u)
{
    if(u==n)
    return 1;
    vis[u]=1;
    for(int i=0;i<V[u].size();i++)
    {
        int v=V[u][i];
        if(!vis[v])
        {
         if(dfs(v))
         return 1;
         }
    }
    return 0;
}
int DFS(int u,int E)
{
    if(u==n)
    return 1;
    d[u]=E+a[u];
    for(int i=0;i<V[u].size();i++)
    {
        int v=V[u][i];
        if(d[u]+a[v]>0)
        {
            if(!d[v])//表示v未访问过 ,直接访问 
            {
            if(DFS(v,d[u]))
            return 1;
            }        
            else if(d[u]+a[v]>d[v])//访问过,看看是否能够成正环,如果能成正环,直接从该点搜索看是否能够到达重点 
             {
                 memset(vis,0,sizeof(vis));
                if(dfs(v))
                return 1;
            }
        }
    }
    return 0;
}
int main()
{
    int m,k;
    while(scanf("%d",&n)!=EOF&&n!=-1)
    {
        memset(a,0,sizeof(a));
        memset(d,0,sizeof(d));
        for(int i=1;i<=n;i++)
        V[i].clear();
        for(int i=1;i<=n;i++)
        {
            scanf("%d",&a[i]);
            scanf("%d",&m);
            for(int j=0;j<m;j++)
            {
                scanf("%d",&k);
                V[i].push_back(k);
            }
        }
        if(DFS(1,100))
        {
            printf("winnable\n");
        }
        else
        printf("hopeless\n");
    }
    return 0;
}

 

Uva 10557 XYZZY

标签:

原文地址:http://www.cnblogs.com/NaCl/p/4792323.html

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