比赛 防止浮躁的小练习v0.6 评测结果 AAAAAAAAAA
题目名称 P服务点设置 最终得分 100
用户昵称 Lethur 运行时间 0.038 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2016-10-20 16:01:02
显示代码纯文本
//Floyed+迭代加深搜索
#include<cstdio>
#include<cstdlib>
#include<iostream>
#include<cctype>
#include<algorithm>
#include<cstring>
#include<iomanip>
#include<cmath>
#define MAXN 101
#define INF 0x3f3f3f3f
#define COGS  
using namespace std;
typedef long long ll;
typedef long double ld;
int map[MAXN][MAXN]={0};
int n,m,p;
int max_num;
int min_num;
int ans_num=INF;
int ans[MAXN]={0};
template<typename T>inline T read(T &x)
{
	int f=1;
	char ch=getchar();
	for(;!isdigit(ch);ch=getchar())
	if(ch=='-')
	f=-1;
	for(x=0;isdigit(ch);ch=getchar())
	x=10*x+ch-'0';
	return x*=f;
}
template<typename T>inline void write(T x)
{
	if(x==0)
	{
		putchar('0');
		return ;
	}
	if(x<0)
	{
		putchar('-');
		x=-x;
	}
	int top=0;
	static char s[20];
	for(;x;x/=10)
	{
		s[++top]=x%10+'0';
	}
	while(top)
	{
		putchar(s[top--]);
	}
	return ;
}
inline void dfs(int deep,int now)
{
	static int v[MAXN]={0};
	max_num=-1;
	if(now>n)
	return ;
	if(deep==p)
	{
		for(int i=0;i<n;i++)
		{
			min_num=INF;
			for(int j=0;j<p;j++)
			{
				min_num=min(min_num,map[i][v[j]]);
			}
			max_num=max(min_num,max_num);
		}
		if(max_num<ans_num)
		{
			ans_num=max_num;
			for(int i=0;i<p;i++)
			{
				ans[i]=v[i];
			}
		}
		return ;
	}
	for(int i=now+1;i<n&&n-i+1>=p-deep;i++)
	{
		v[deep]=i;
		dfs(deep+1,i);
	}
	return ;
}
inline void work()
{
	int i,j,k;
	read(n);
	read(m);
	read(p);
	for(int i=0;i<n;i++)
	{
		for(int j=0;j<n;j++)
		{
			if(i==j)
			{
				map[i][j]=map[j][i]=0;
			}
			else
			{
				map[i][j]=INF;
			}
		}
	}
	for(int i=0;i<m;i++)
	{
		int x,y,z;
		read(x);
		read(y);
		read(z);
		map[x][y]=map[y][x]=z;
	}
	for(int k=0;k<n;k++)
	{
		if(i!=k)
		{
			for(int i=0;i<n;i++)
			{
				for(j=0;j<n;j++)
				{
					if(i!=j&&j!=k&&map[i][j]>map[i][k]+map[k][j])
					{
						map[i][j]=map[i][k]+map[k][j];
					}
				}
			}
		}
	}
	dfs(0,-1);
	for(int i=0;i<p;i++)
	{
		write(ans[i]);
		putchar(' ');
	}
	putchar('\n');
	return ;
}
int main()
{
	ios::sync_with_stdio(false);
	#ifdef COGS
		freopen("djsc.in","r",stdin);
		freopen("djsc.out","w",stdout);
	#endif
		work();
	return 0;
}