程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> UVa10557 - XYZZY

UVa10557 - XYZZY

編輯:C++入門知識

題目地址:點擊打開鏈接

解法:

DFS,遍歷到某個點,如果該點已被訪問並且當前路徑能量值大於已保存的該點的能量值,那麼存在一個能量值和為正的環,然後判斷能否從該點到達終點就可以了。

C++代碼:

#include 
#include 
#include 
using namespace std;
const int maxsize = 110;
int visited[maxsize];
int n;
bool flag;
int eneg[maxsize];
int mark[maxsize];
bool flagDfs;
struct Room
{
	int energy;
	int num;
	vector vi;
};
Room r[maxsize];
void DFS(int i)
{
	if(i==n||flagDfs)
	{
		flagDfs=true;
		return;
	}
	mark[i]=1;
	for(int j=0;jeneg[k])
					{
						memset(mark,0,sizeof(mark));
						flagDfs=false;
						DFS(i);
						if(flagDfs)
						{
							flag=true;
							return;
						}
					}
				}
			}
		}
	}
}
int main()
{
	while(cin>>n&&n!=-1)
	{
		int i,j;
		for(i=1;i<=n;++i)
		{
			cin>>r[i].energy>>r[i].num;
			r[i].vi.clear();
			for(j=0;j>x;
				r[i].vi.push_back(x);
			}
		}
		memset(eneg,0,sizeof(eneg));
		memset(visited,0,sizeof(visited));
		flag=false;
		dfs(1,100);
		if(flag)
			cout<<"winnable"<

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved