题解 | #B-经商#

B-经商

https://ac.nowcoder.com/acm/problem/14545

思路

01 背包 + 并查集

Code

#include <bits/stdc++.h>

using namespace std;

const int N = 10010;

int p[N];
int fa[N];
int f[N],v[N],w[N];
int n,m,c;

int find(int x){
    if(x==fa[x]) return x;
    return fa[x]=find(fa[x]);
}

int main(){
    int T;
    cin>>T;

    while(T--){
        cin>>n>>m>>c;
        for(int i=2;i<=n;i++) cin>>v[i]>>w[i];

        for(int i=1;i<=n;i++) fa[i]=i;
        while(m--){
            int a,b;
            cin>>a>>b;
            a=find(a),b=find(b);
            if(a!=b) fa[a]=b;
        }
        int t=0;
        for(int i=2;i<=n;i++)  if(find(i)==find(1)) p[++t]=i; 
        for(int i=1;i<=t;i++) {
            int pos=p[i];
            for(int j=c;j>=v[pos];j--)   f[j]=max(f[j],f[j-v[pos]]+w[pos]);
        }
        cout<<f[c]<<endl;
        memset(f,0,sizeof f);
    }

    return 0;
}
全部评论

相关推荐

难怪不开摄像头,全是简单的性格题,比大疆友善多了
NULL10086:今早上发的测评,我这还没做呢,官网上已经显示挂了
投递大疆等公司7个岗位
点赞 评论 收藏
分享
码农索隆:你告诉他,你看他也一般
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 golang
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务