Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define f first
- #define s second
- #define ll long long
- #define pb push_back
- #define IOS ios::sync_with_stdio(0);cin.tie(0);cout.tie(0)
- #define mk make_pair
- using namespace std;
- const int MAXN = 1e6 + 5;
- const int INF = 1e9 + 7;
- const int MOD = 1e9 + 7;
- void solve(int Test){
- int n, m, k;
- cin >> n >> m >> k;
- for (int i = 0; i < n; i++){
- cin >> a[i];
- }
- for (int i = 1; i <= k; i++){
- int x, y, cost;
- cin >> x >> y >> cost;
- x--;
- y--;
- c[x][y] = cost;
- }
- for (int i = 0; i < n; i++){
- dp[(1 << i)][i] = a[i];
- }
- for (int mask = 1; mask < (1 << n); mask++){
- for (int i = 0; i < n; i++){
- if ((mask >> i) & 1){
- for (int j = 0; j < n; j++){
- if ((mask >> j) & 1 == 0){
- dp[mask | (1 << j)] =
- max(dp[mask | (1 << j)],
- dp[mask][i] + a[j] + c[i][j]);
- }
- }
- }
- }
- }
- for (int mask = 1; mask < (1 << n); mask++){
- int cnt = builtin_popcount(mask);
- if (cnt == m){
- for (int i = 0; i < n; i++){
- if ((mask >> i) & 1){
- ans = max(ans, d[mask][i]);
- }
- }
- }
- }
- }
- main() {
- IOS;
- srand(time(0));
- int t = 1;
- //cin >> t;
- int T = 1;
- while(t--){
- solve(T);
- T++;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment