Submission #1138319

#TimeUsernameProblemLanguageResultExecution timeMemory
1138319SmuggingSpunElection Campaign (JOI15_election_campaign)C++20
10 / 100
310 ms13152 KiB
#include<bits/stdc++.h>
#define taskname "A"
using namespace std;
typedef long long ll;
const int lim = 1e5 + 5;
vector<int>g[lim];
int n, m, parent[lim], h[lim];
void dfs(int s){
	for(int& d : g[s]){
		if(d != parent[s]){
			h[d] = h[parent[d] = s] + 1;
			dfs(d);
		}
	}
}
namespace sub1{
	bitset<lim>current, state[15];
	int c[15];
	void solve(){
		for(int i = 0; i < m; i++){
			int u, v;
			cin >> u >> v >> c[i];
			state[i].reset();
			state[i].set(u);
			state[i].set(v);
			while(u != v){
				if(h[u] < h[v]){
					swap(u, v);
				}
				state[i].set(u = parent[u]);
			}
		}
		ll ans = 0;
		for(int mask = (1 << m) - 1; mask > 0; mask--){
			current.reset();
			ll sum = 0;
			bool can = true;
			for(int i = 0; i < m; i++){
				if(1 << i & mask){
					if((current & state[i]).any()){
						can = false;
						break;
					}
					current |= state[i];
					sum += c[i];
				}
			}
			if(can && ans < sum){
				ans = sum;
			}
		}
		cout << ans;
	}
}
int main(){
	ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
	if(fopen(taskname".inp", "r")){
		freopen(taskname".inp", "r", stdin);
	}
	cin >> n;
	for(int i = 1; i < n; i++){
		int u, v;
		cin >> u >> v;
		g[u].emplace_back(v);
		g[v].emplace_back(u);
	}
	dfs(parent[1] = h[1] = 1);
	cin >> m;
	if(m <= 15){
		sub1::solve();
	}
}

Compilation message (stderr)

election_campaign.cpp: In function 'int main()':
election_campaign.cpp:58:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   58 |                 freopen(taskname".inp", "r", stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...