比赛 防止浮躁的小练习V0.1 评测结果 AAAAAAAAAA
题目名称 P服务点设置 最终得分 100
用户昵称 NewBee 运行时间 0.219 s
代码语言 C++ 内存使用 0.35 MiB
提交时间 2016-10-07 16:41:51
显示代码纯文本
#include<fstream>
using namespace std;
ifstream dandanin("djsc.in");
ofstream dandanout("djsc.out");
int q[101][101],n,m,v,z[100],c=0,MAX=0,temp=100000000,temp1=1000000,r[100];
void di(int x);
int main()
{
	dandanin>>n>>m>>v;
	for (int i=0;i<n;i++)
		for (int j=0;j<n;j++)
			q[i][j]=1000000000;
	for (int i=0;i<m;i++)
	{
		int temp,temp1;
		dandanin>>temp>>temp1;
		dandanin>>q[temp][temp1];
		q[temp1][temp]=q[temp][temp1];
	}
	for (int k=0;k<n;k++)
	{
		for (int i=0;i<n;i++)
		{
			for (int j=0;j<n;j++)
			{
				int temp;
				temp=q[i][k]+q[k][j];
				if (q[i][j]>temp)
				{
					q[i][j]=temp;
				}
			}
		}
	}
	temp1=1000000;
	di (0);
	for (int i=0;i<v;i++)
	{
		dandanout<<z[i]<<' ';
	}
	return 0;
}
void di(int x)
{
	if (c==v)
	{
		int zong=0;
		for (int i=0;i<n;i++)
		{
			bool fuck=false;
			for (int k=0;k<v;k++)
			{
				if (i==r[k])
				{
					fuck=true;
					break;
				}
			}
			if (fuck)
			{
				continue;
			}
			int mi=1000000;
			for (int j=0;j<v;j++)
			{
				if (q[i][r[j]]<mi)
				{
					mi=q[i][r[j]];
				}
			}
			if (mi>zong)
			{
				zong=mi;
			}
		}
		if (zong<temp1)
		{
			temp1=zong;
			for (int p=0;p<v;p++)
			{
				z[p]=r[p];
			}
		}
	}
	else
	{
		for (int i=0;i<n;i++)
		{
			bool fuck=false;
			for (int j=0;j<c;j++)
			{
				if (i==r[j])
				{
					fuck=true;
				}
			}
			if (fuck)
			{
				continue;
			}
			r[c]=i;
			c++;
			di(i);
			c--;
		}
	}
}