比赛 NOIP2023模拟赛3 评测结果 WWWWWWWETT
题目名称 旅游网络 最终得分 0
用户昵称 黄天乐 运行时间 16.858 s
代码语言 C++ 内存使用 3.16 MiB
提交时间 2023-11-15 10:25:45
显示代码纯文本
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int n,m;
int sum,ans=1e9;
const int MAXN=25005;
int v[MAXN],vk[MAXN];
bool vis[MAXN];
int k[MAXN];
int head[MAXN];
int num;
struct lst{
    int next;
    int to;
}e[MAXN];
void add(int from,int to){
    num++;
    e[num].next=head[from];
    e[num].to=to;
    head[from]=num;
}
queue<int>que;
void d(int s){
    memset(vis,0,sizeof(vis));
    k[s]=1;
    que.push(s);
    while(!que.empty()){
        int x=que.front();
        que.pop();
        if(!vis[x]){
            vis[x]=true;
            for(int i=head[x];i!=0;i=e[i].next){
                int y=e[i].to;
                que.push(y);
                if(k[y])continue;
                if(k[x]==1){
                    k[y]=2;
                }else k[y]=1;
            }
        }
    }
}
int main(){
    freopen("cogito.in","r",stdin);
    freopen("cogito.out","w",stdout);
    cin>>n>>m;
    for(int i=1;i<=n;i++)cin>>v[i];
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        add(u,v);
        add(v,u);
    }
    for(int i=1;i<=n;i++){
        int sum=0;
        memset(k,0,sizeof(k));
        k[i]=1;
        d(i);
        for(int i=1;i<=n;i++){
            if(!vis[i]||k[i]==2){
                sum+=v[i];
            }
        }
        ans=min(ans,sum);
    }
    cout<<ans<<endl;
    return 0;
}