• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

  • 联系
  • 订阅
  • 管理

View Post

sicily 1024 Magic Island dfs

        这题就是个杯具~~~简单的dfs, WA了无数次,后来发现是因为每次cases忘了重新把vector数组clear掉,晕死~~~

#include<iostream>
#include <vector>
#include <stdio.h>
#include <memory.h>
using namespace std;

struct info
{
	int id;
	int len;
	info(int id, int len)
	{
		this->id = id;
		this->len = len;
	}
	info(){}
};

vector<info> head[10005];
bool isvisit[10005];
int N, K;
int result;
int sum = 0;
void dfs(int, int);

int main()
{
	int x, y, distance;
	while (cin >> N)
	{
		cin >> K;
		sum = 0;
		result = 0;
		memset(isvisit, false, sizeof(isvisit));
		for (int i = 1; i < N; i++)
		{
			scanf("%d%d%d", &x, &y, &distance);

			head[x-1].push_back(info(y-1, distance));
			head[y-1].push_back(info(x-1, distance));
		}
		isvisit[K-1] = true;
		dfs(K-1, 0);
		cout << result << endl;

		for (int i = 0; i < N; i++)
			head[i].clear();
	}
	return 0;
}

void dfs(int begin, int sum)
{
	
	for (int i = 0; i < head[begin].size(); i++)
	{
		if (!isvisit[head[begin][i].id])
		{
			isvisit[head[begin][i].id] = true;
			sum += head[begin][i].len;
			result = max(result, sum);
			dfs(head[begin][i].id, sum);	
			sum -= head[begin][i].len;
			isvisit[head[begin][i].id] = false;
		}
	}
}

posted on 2010-12-08 14:27  sysuwhj  阅读(1203)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3