比赛 20110722 评测结果 AAAAAAAAAAAAAAAAT
题目名称 网络探测 最终得分 94
用户昵称 Citron酱 运行时间 0.000 s
代码语言 C++ 内存使用 0.00 MiB
提交时间 2011-07-22 11:06:06
显示代码纯文本
#include <fstream>
#include <climits>

#define I_F "ping.in"
#define O_F "ping.out"
#define MAXn 1000
#define MAXq 100000
#define P 10000000

using namespace std;

int n,t;
int map[MAXn][MAXn]={{0}};
bool f[MAXn]={false};
int ans=INT_MAX;
long p=0;

void Input();
void Dfs(int,int,short);
void Output();

int main()
{
	Input();
	Dfs(0,0,0);
	Output();
	return 0;
}

void Input()
{
	ifstream fin(I_F);
	int m,x,y;
	fin>>n>>m>>t;
	for (int i=0; i<m; i++)
	{
		fin>>x>>y;
		fin>>map[x][y];
		map[y][x]=map[x][y];
	}
	fin.close();
}

void Dfs(int s, int l, short d)
{
	p++;
	if (p<=P)
	{
		if (s==t)
		{
			if (l<ans)
				ans=l;
		}
		else
			if (d<10)
			{
				f[s]=true;
				for (int i=1; i<n; i++)
					if ((map[s][i]>0)&&(!f[i]))
						if (l+map[s][i]<ans)
							Dfs(i,l+map[s][i],d+1);
				f[s]=false;
			}
	}
}

void Output()
{
	ofstream fout(O_F);
	if (ans<INT_MAX)
		fout<<ans<<'\n';
	else
		fout<<"no\n";
	fout.close();
}