蒟蒻替别人求助,#1#5#9#16A其余WA
查看原帖
蒟蒻替别人求助,#1#5#9#16A其余WA
632635
WOERDESUGX楼主2022/10/14 14:54
#include<bits/stdc++.h>
#define get getchar()
using namespace std;
inline int read() {
    int x=0,f=1;char ch=get;
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=get;}
    while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=get;
    return x*f;
}
int n,m;
int a[500],maxn;
bool b[500],s[500][500];
void dfs(int op,int ans) {
    int u=0;
    b[op]=1;
    for(int i=1;i<=n;i++) {
        if(s[op][i]&&!b[i]) {
            dfs(i,ans+a[i]);
            u++;
        }
    }
    if(!u)maxn=max(maxn,ans);
}
int main() {
    n=read(),m=read();
    for(int i=1;i<=n;i++)a[i]=read();
    for(int i=1;i<=m;i++) {
        int o=read(),p=read();
        s[o][p]=s[p][o]=1;
    }
    for(int i=1;i<=n;i++)
        if(!b[i]) dfs(i,a[i]);
    printf("%d\n",maxn);
    return 0;
}
2022/10/14 14:54
加载中...