无码av一区二区三区无码,在线观看老湿视频福利,日韩经典三级片,成 人色 网 站 欧美大片在线观看

歡迎光臨散文網(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ó)家法律
东光县| 如皋市| 莎车县| 鹤山市| 双牌县| 德化县| 确山县| 宝清县| 库尔勒市| 阿坝县| 汉中市| 崇左市| 政和县| 阳高县| 甘洛县| 杭州市| 桦南县| 湟源县| 临朐县| 连山| 漳平市| 舞阳县| 青龙| 安远县| 西和县| 铜山县| 察隅县| 嘉兴市| 定边县| 阿拉善右旗| 札达县| 滕州市| 东城区| 潜山县| 开阳县| 高邑县| 长宁区| 洛阳市| 宁明县| 南城县| 佛山市|