51Nod 算法马拉松21(迎新年)
2017-01-05 20:57
295 查看
#include<cstdio> #include<cstring> #include<algorithm> #include<vector> using namespace std; const int maxn=100010; struct edge{int u,v,w;}e[maxn]; void bfs(); vector<int>G[maxn]; int n,q[maxn],prt[maxn]={0},size[maxn]={0}; long long ans=0; int main(){ scanf("%d",&n); for(int i=1;i<n;i++){ scanf("%d%d%d",&e[i].u,&e[i].v,&e[i].w); G[e[i].u].push_back(e[i].v); G[e[i].v].push_back(e[i].u); } bfs(); for(int i=1;i<n;i++){ if(prt[e[i].u]==e[i].v)swap(e[i].u,e[i].v); int s=min(size[e[i].v],size[1]-size[e[i].v]); ans+=(long long)s*e[i].w; } printf("%lld",ans); return 0; } void bfs(){ int head=0,tail=0; q[tail++]=1; while(head!=tail){ int x=q[head++]; size[x]=1; for(int i=0;i<(int)G[x].size();i++)if(G[x][i]!=prt[x]){ prt[G[x][i]]=x; q[tail++]=G[x][i]; } } for(int i=n;i;i--){ int x=q[i]; size[prt[x]]+=size[x]; } }View Code 附官方题解:
(话说构造法真的可行嘛……我仍然理解不了贪心构造……只会写O(n2m2)的费用流……囧囧囧)
反思:
这次打比赛的时候有点着急,B题也没有耐心仔细想/写,发挥并不太好。
A题看见别人神速过题之后就有点慌了,一改求稳的作风,凭着直觉交了一份代码,能A估计是运气。今后的比赛或者是考试一定要求稳,毕竟无缘无故掉了几十分上百分可是很要命的。
下一站,UOJ Test Round #2。
加油。
相关文章推荐
- 「51nod 算法马拉松31C」彩色树
- 51Nod-算法马拉松23-B-谷歌的恐龙(数学期望)
- 51nod 算法马拉松32 题解
- 51Nod 算法马拉松12 移数博弈
- 51nod 算法马拉松12 逛街(treap)
- 51NOD 1537 分解(矩阵快速幂)——算法马拉松17(告别奥运)
- 51nod 算法马拉松25
- 51Nod 算法马拉松22 代码能力捉急记
- 51Nod 算法马拉松18 复杂度分析 二进制按位累计代价
- 【51Nod 1622】【算法马拉松 19C】集合对
- 51Nod 算法马拉松22 开黑记
- 51NOD算法马拉松21(迎新年) A - 1737 配对(dfs树的重心)
- 51nod算法马拉松20
- 【51nod】【算法马拉松14】1586 约数和
- 【51Nod 1756】【算法马拉松 23】谷歌的恐龙
- 【51NOD 1674】【51NOD 算法马拉松19】区间的价值 V2
- 【51Nod 1501】【算法马拉松 19D】石头剪刀布威力加强版
- 51NOD 1836 战忽局的手段(矩阵乘法加速+__float128精度问题+概率期望)——算法马拉松20(告别美国大选及卡斯特罗)
- 51Nod 算法马拉松23 开黑记
- 【51Nod 1815】【算法马拉松 23】调查任务