比赛 NOIP2023模拟赛3 评测结果 AATTTTTTTT
题目名称 旅游网络 最终得分 20
用户昵称 小金 运行时间 64.000 s
代码语言 C++ 内存使用 5.04 MiB
提交时间 2023-11-15 12:40:32
显示代码纯文本
#include<iostream>
#include<cstdio>
using namespace std;
const int N=20010,M=25010;
long long mi=0x3f3f3f3f3f3f3f3f,c[N];
int v[M],h[N],ne[M],n,m,tot=0,b[N]={};
void add(int x,int y)
{
	tot++;
	v[tot]=y;
	ne[tot]=h[x];
	h[x]=tot;
}
void dfs(int x,long long s)
{
	if(s>mi)
	{
		return;
	}
	if(x==n+1)
	{
		int flag=1;
		for(int i=1;i<=n;i++)
		{
		    if(b[i]!=1)
			{
				int p=0;
				for(int j=h[i];j;j=ne[j])
				{
					if(b[v[j]]==1)
					{
						p=1;
						break;
					}
				}
				if(p==0)
				{
					flag=0;
				}
			}
		}
		if(flag==1&&s<mi)
		{
			mi=s;
		}
		return;
	}
	b[x]=1;
	dfs(x+1,s+c[x]);
	b[x]=0;
	dfs(x+1,s);
}
int main()
{
	freopen("cogito.in","r",stdin);
    freopen("cogito.out","w",stdout);
	cin>>n>>m;
	for(int i=1;i<=n;i++)
	{
		cin>>c[i];
	}
	for(int i=1;i<=m;i++)
	{
		int u,v;
		cin>>u>>v;
		add(u,v);
		add(v,u);
	}
	dfs(1,0);
	cout<<mi;
	return 0;
}