2011ACM成都赛区现场赛H题 (非递归dfs) (hdu4118)
来源:互联网 发布:mac上的空档接龙 编辑:程序博客网 时间:2024/06/02 01:25
这题我在现场的时候用图论做超时,需要非递归dfs。
我维护了一个a数组记录结点的儿子数。
#include <stdio.h>#include <cstring>#include <stack>using namespace std;struct gtype { int y,d,next;}g[200010];int first[100100],tot,a[100100],tt,x,y,d,n;bool v[100100];inline int min(int a,int b) { if (a<b) return a; else return b;} void add(int x,int y,int d) { tot++; g[tot].d=d; g[tot].y=y; g[tot].next=first[x]; first[x]=tot; tot++; g[tot].d=d; g[tot].y=x; g[tot].next=first[y]; first[y]=tot;}void dfs(int p) { stack <int> stk; int t=first[p]; stk.push(p); v[p]=true; while (1) { if (t==-1) { int y = stk.top(); stk.pop(); if (stk.empty()) break; a[stk.top()]+=a[y]; } int x = stk.top(); t = first[x]; while (t!=-1) { if (!v[g[t].y]) { v[g[t].y]=true; stk.push(g[t].y); break; } t=g[t].next; } }}int main() { scanf("%d",&tt); for (int cas=1;cas<=tt;cas++) { tot=0; memset(g,0,sizeof(g)); memset(first,-1,sizeof(first)); scanf("%d",&n); for (int i=1;i<n;i++) { scanf("%d%d%d",&x,&y,&d); add(x,y,d); } for (int i=1;i<=n;i++) a[i]=1; memset(v,0,sizeof(v)); dfs(1); __int64 ans=0; for (int i=1;i<=2*(n-1);i+=2) { x=g[i].y; y=g[i+1].y; d=min(a[x],a[y]); ans+=min(d,n-d)*2*g[i].d; } printf("Case #%d: %I64d\n",cas,ans); } return 0;}
- 2011ACM成都赛区现场赛H题 (非递归dfs) (hdu4118)
- 2011ACM 成都现场 H题 HDU4118
- 2011ACM成都赛区现场赛B题 (水题) (SPOJ9935)
- 2011ACM成都赛区现场赛E题 (2-sat) (SPOJ9939)
- 2012ACM/ICPC成都赛区现场赛A题---Browsing History(hdu4464)
- 2012ACM/ICPC成都赛区现场赛I题---Count(hdu4472)
- 2012ACM/ICPC成都赛区现场赛K题---Yet Another Multiple Problem(hdu4474)
- hdu 4473 Exam (2012ACM成都赛区现场赛J题)
- HDU 4790 Just Random (2013ACM/ICPC成都赛区现场赛J题)
- HDU/HDOJ 4038 2011成都赛区网络赛H题
- 2011ACM 成都现场 I题
- BUPT 238 2011ACM北京赛区现场赛A题
- HDU 5534 HDU 5532 2015ACM-ICPC长春赛区现场赛H题
- HDU 4790 2013 ACM/ICPC 成都赛区现场赛 J. Just Random
- HDU 4112 2011ACM成都现场赛B
- hdu 4112 2011 ACM成都现场赛B
- HDU 4449 Building Design【金华赛区现场赛H题】
- 2011 ACM/ICPC 北京赛区现场赛解题:Activation
- 堆栈内存的解释
- (转载)fedora 16 livecd硬盘u盘 安装
- 成功者必备
- Android开发:系统自动实现开机启动
- MingW_MSYS
- 2011ACM成都赛区现场赛H题 (非递归dfs) (hdu4118)
- JSP标准标签库介绍
- 关于属于C++的控件
- 20111110==程序员
- Git学习教程(三):Git工作流程
- find命令用法
- 11月8日,立冬,期满,归
- Python open读写文件实现脚本
- Hibernate复习笔记(二)