Skip to content

Commit 7f16d43

Browse files
Merge pull request #15 from rajhimanshumax/patch-1
Create OptimalEdgeWeights.cpp
2 parents 4d351fb + 1959a84 commit 7f16d43

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

OptimalEdgeWeights.cpp

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
/*"Success isn't permanent, failure isn't fatal,
2+
it's the courage to continue that counts"
3+
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
4+
⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⣠⡖⠁⠀⠀⠀⠀⠀⠀⠈⢲⣄⠀⠀⠀⠀⠀⠀⠀⠀⠀
5+
⠀ ⠀⠀⠀⠀⠀⠀⠀⣼⡏⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣧⠀⠀⠀⠀⠀⠀⠀⠀
6+
⠀ ⠀⠀⠀⠀⠀⠀⣸⣿⠁ HIMANSHU⠀⠈⣿⣇⠀⠀⠀⠀⠀⠀⠀
7+
⠀ ⠀⠀⠀⠀⠀⠀⣿⣿⡇⠀⢀⣀⣤⣤⣤⣤⣀⡀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠀
8+
⠀ ⠀⠀⠀⠀⠀⠀⢻⣿⣿⣔⢿⡿⠟⠛⠛⠻⢿⡿⣢⣿⣿⡟⠀⠀⠀⠀⠀⠀⠀
9+
⠀ ⠀⠀⠀⣀⣤⣶⣾⣿⣿⣿⣷⣤⣀⡀⢀⣀⣤⣾⣿⣿⣿⣷⣶⣤⡀⠀⠀⠀⠀
10+
⠀ ⠀⢠⣾⣿⡿⠿⠿⠿⣿⣿⣿⣿⡿⠏⠻⢿⣿⣿⣿⣿⠿⠿⠿⢿⣿⣷⡀⠀⠀
11+
⠀ ⢠⡿⠋⠁⠀⠀⢸⣿⡇⠉⠻⣿⠇⠀⠀⠸⣿⡿⠋⢰⣿⡇⠀⠀⠈⠙⢿⡄⠀
12+
⠀ ⡿⠁⠀⠀⠀⠀⠘⣿⣷⡀⠀⠰⣿⣶⣶⣿⡎⠀⢀⣾⣿⠇⠀⠀⠀⠀⠈⢿⠀
13+
⠀ ⡇⠀⠀⠀⠀⠀⠀⠹⣿⣷⣄⠀⣿⣿⣿⣿⠀⣠⣾⣿⠏⠀⠀⠀⠀⠀⠀⢸⠀
14+
⠀ ⠁⠀⠀⠀⠀⠀⠀⠀⠈⠻⢿⢇⣿⣿⣿⣿⡸⣿⠟⠁⠀⠀⠀⠀⠀⠀⠀⠈⠀
15+
⠀ ⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣼⣿⣿⣿⣿⣧⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
16+
⠀ ⠀⠀⠐⢤⣀⣀⢀⣀⣠⣴⣿⣿⠿⠋⠙⠿⣿⣿⣦⣄⣀⠀⠀⣀⡠⠂⠀⠀⠀
17+
⠀ ⠀⠀⠀⠀⠈⠉⠛⠛⠛⠛⠉⠀⠀⠀⠀⠀⠈⠉⠛⠛⠛⠛⠋⠁⠀⠀⠀
18+
*/
19+
#include<bits/stdc++.h>
20+
using namespace std;
21+
#define A 1000000007ll
22+
#define D 100000000000000ll
23+
#define B 998244353ll
24+
#define C 1000000000000000000ll
25+
#define pfin(a) printf("%d\n",a);
26+
#define pfln(a) printf("%lld\n",a);
27+
#define pfis(a) printf("%d ",a);
28+
#define pfls(a) printf("%lld ",a);
29+
#define sfi(a) scanf("%d",&a);
30+
#define sfl(a) scanf("%lld",&a);
31+
#define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL)
32+
#define f(i,a,b) for(int i=a;i<b;i++)
33+
#define pb(a) push_back(a);
34+
#define mp(a,b) make_pair(a,b)
35+
#define mxe(v) *max_element(v.begin(),v.end())
36+
#define mne(v) *min_element(v.begin(),v.end())
37+
#define rev(v) reverse(v.begin(),v.end())
38+
#define sor(v) sort(v.begin(),v.end())
39+
#define sorrev(v) sort(v.begin(),v.end(),greater<ll>())
40+
#define bs binary_search
41+
#define lb(v,x) lower_bound(v.begin(),v.end(),x)-v.begin()
42+
#define ub(v,x) upper_bound(v.begin(),v.end(),x)-v.begin()
43+
#define ll long long
44+
#define F first
45+
#define S second
46+
#define vi vector<ll>
47+
#define vc vector<char>
48+
#define endl "\n"
49+
#define deci fixed<<setprecision(9)
50+
const ll mod = 1e9 + 9;
51+
#define N 1000005
52+
vector<ll> v1[N + 1], v2;
53+
bool vis[N + 1];
54+
ll arr[N + 1], crr[N + 1], ans = 0, n1;
55+
void dfs(ll s)
56+
{
57+
vis[s] = true;
58+
ll i;
59+
arr[s]++;
60+
f(i, 0, v1[s].size())
61+
{
62+
ll k = v1[s][i];
63+
if (vis[k] == 0)
64+
{
65+
dfs(k);
66+
arr[s] += arr[k];
67+
}
68+
}
69+
70+
}
71+
void dfs1(ll s)
72+
{
73+
vis[s] = true;
74+
ll i;
75+
if (s != 1)
76+
{
77+
v2.pb(arr[s] * (n1 - arr[s]));
78+
}
79+
f(i, 0, v1[s].size())
80+
{
81+
ll k = v1[s][i];
82+
if (vis[k] == 0)
83+
{
84+
dfs1(k);
85+
}
86+
}
87+
88+
}
89+
int main()
90+
{
91+
#ifndef ONLINE_JUDGE
92+
// for getting input from input.txt
93+
freopen("input.txt", "r", stdin);
94+
// for writing output to output.txt
95+
freopen("output.txt", "w", stdout);
96+
#endif
97+
ll n, k, i;
98+
sfl(n);
99+
sfl(k);
100+
n1 = n + 1;
101+
f(i, 1, n + 1)
102+
{
103+
ll x, y;
104+
sfl(x);
105+
sfl(y);
106+
v1[x].pb(y);
107+
v1[y].pb(x);
108+
}
109+
f(i, 1, n + 1)
110+
{
111+
sfl(crr[i]);
112+
}
113+
sort(crr + 1, crr + (n + 1));
114+
dfs(1);
115+
memset(vis, false, sizeof(vis));
116+
dfs1(1);
117+
sort(v2.begin(), v2.end());
118+
ll j = 0;
119+
f(i, 1, n + 1)
120+
{
121+
ans += (crr[i] * v2[j++]);
122+
}
123+
cout << ans << endl;
124+
return 0;
125+
}

0 commit comments

Comments
 (0)