最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

USACO2022DEC silver1 barn tree 202212月銀牌第一題 (DFS)

2023-01-02 10:54 作者:信奧賽USACO鄭老師  | 我要投稿

#include<bits/stdc++.h>

using namespace std;

typedef long long ll;

int n;

const int MAXN=200001;

vector<ll> w(MAXN);

set<int> g[MAXN];

set<pair<int,ll>> gdw[MAXN];

vector<int> indegree(MAXN);

vector<set<int>> d2n(MAXN);

ll sumw,avgw;

vector<tuple<int,int,ll>> record;

int totalmove;

bool visited[MAXN];

ll dfs(int i,int& nodecount){

ll totalw=w[i];

visited[i]=true;

//cout<<"vis:"<<i<<endl;

for(auto x:g[i]){

if(!visited[x]){

//visited[x]=true;

int nc=0;

ll rv=dfs(x,nc);

if(rv>0){

gdw[x].insert(make_pair(i,rv));

indegree[i]++;

}else{

if(rv<0){

gdw[i].insert(make_pair(x,-rv));

indegree[x]++;

}

}

nodecount+=nc;

totalw+=rv+nc*avgw;

}

}

nodecount++;

//cout<<i<<" "<<totalw<<" "<<avgw*nodecount<<" "<<nodecount<<endl;

return totalw-avgw*nodecount;

}

int main(){

cin>>n;

for(int i=1;i<=n;i++){

cin>>w[i];

sumw+=w[i];

}

avgw=sumw/n;

for(int i=1;i<=n-1;i++){

int u,v;

cin>>u>>v;

g[u].insert(v);

g[v].insert(u);

}

int nc=0;

if(dfs(1,nc)!=0){

cout<<"input data error 1\n";

}

if(nc!=n){

cout<<"input data error 2\n";

}

//topology sequence

for(int i=1;i<=n;i++){

d2n[indegree[i]].insert(i);

//cout<<i<<" "<<indegree[i]<<endl;

}

while(d2n[0].size()>0){

int tn=*(d2n[0].begin());

for(auto ip=gdw[tn].begin();ip!=gdw[tn].end();){

auto x=*ip;

int nn=x.first;

ll w=x.second;

d2n[indegree[nn]].erase(nn);

indegree[nn]--;

d2n[indegree[nn]].insert(nn);

totalmove++;

record.push_back(make_tuple(tn,nn,w));

auto tip=ip;

ip++;

gdw[tn].erase(tip);

}

d2n[0].erase(tn);

}

printf("%d\n",totalmove);

for(int i=0;i<record.size();i++){

printf("%d %d %ld\n",get<0>(record[i]),get<1>(record[i]),get<2>(record[i]));

}

? ? return 0;

}? ??


USACO2022DEC silver1 barn tree 202212月銀牌第一題 (DFS)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
隆尧县| 邵阳市| 茶陵县| 定安县| 库尔勒市| 新河县| 务川| 汪清县| 韶山市| 游戏| 通江县| 潍坊市| 额济纳旗| 合阳县| 连平县| 嘉荫县| 汪清县| 汉川市| 霍州市| 自治县| 遂昌县| 灵寿县| 沁阳市| 福海县| 迭部县| 潼关县| 新疆| 博野县| 荣昌县| 安龙县| 公主岭市| 东山县| 绥阳县| 黄骅市| 章丘市| 罗甸县| 潞城市| 开化县| 兴仁县| 封丘县| 乐山市|