2017.9.21 道路修建(noi2011) 思考记录
来源:互联网 发布:php 析构函数的用法 编辑:程序博客网 时间:2024/06/07 08:54
这个题,,dfs即可
但听说dfs会爆栈,还会被卡、
所以就写了一个拓扑、
noi2011很良心啊
码(不知为何,非常的慢):
#include<cstdio>#include<cstring>using namespace std;#include<queue>#include<cmath>#define N 1000006#define ll long longqueue<int>q;int bian[N][3],tot,hou[N<<1],xia[N],zhong[N<<1],v[N<<1],rd[N],n,i,x,y,z,f[N],sd[N];bool vis[N];ll ans;void jian(int a,int b,int c){++tot,hou[tot]=xia[a],xia[a]=tot,zhong[tot]=b,v[tot]=c;rd[b]++;}void jia(int a,int b,int c){jian(a,b,c);jian(b,a,c);}int main(){memset(xia,-1,sizeof(xia));scanf("%d",&n);for(i=1;i<n;i++){scanf("%d%d%d",&x,&y,&z);jia(x,y,z);bian[i][0]=x;bian[i][1]=y;bian[i][2]=z;}for(i=1;i<=n;i++){f[i]=1;sd[i]=1;if(rd[i]==1)q.push(i),vis[i]=1;}while(!q.empty()){int st=q.front();q.pop();for(i=xia[st];i!=-1;i=hou[i]){int nd=zhong[i];if(vis[nd])continue; f[nd]+=f[st]; sd[nd]=max(sd[nd],sd[st]+1);rd[nd]--;if(rd[nd]==1){q.push(nd);vis[nd]=1;}}}for(i=1;i<n;i++){if(sd[bian[i][0]]>sd[bian[i][1]])swap(bian[i][0],bian[i][1]);ans+=1ll*fabs(n-2*f[bian[i][0]])*1ll*bian[i][2];}printf("%lld",ans);}
阅读全文
0 0
- 2017.9.21 道路修建(noi2011) 思考记录
- [NOI2011]道路修建(树上dfs)
- [bzoj2435][Noi2011]道路修建(树上dp)
- [BZOJ2435][Noi2011]道路修建(树形dp)
- bzoj 2435: [Noi2011]道路修建 (dfs)
- 【bzoj 2435】[Noi2011]道路修建(dfs)
- bzoj 2435: [Noi2011]道路修建(DFS)
- 【NOI2011】道路修建
- 2435: [Noi2011]道路修建
- bzoj2435: [Noi2011]道路修建
- NOI2011道路修建 TreeDp
- [BZOJ2435] [Noi2011]道路修建
- [BZOJ2435][Noi2011]道路修建
- 2435: [Noi2011]道路修建
- bzoj2435[Noi2011] 道路修建
- BZOJ2435: [Noi2011]道路修建
- 2435: [Noi2011]道路修建
- BZOJ2435: [Noi2011]道路修建
- ArrayList LinkedList Vector的区别
- 第二周-项目0-宣告主权
- Swift 类型转换
- 纯css label写轮播图
- Vue项目4、Vuex
- 2017.9.21 道路修建(noi2011) 思考记录
- 次方求模
- Android中关于FTP的文件上传和下载
- SpringCloudStream 构建消息驱动的微服务框架
- RedisCluster心得
- 了解Material Design
- linux 安装tomcat7
- 统计字符号串“aaaabbbccccddfggh”中字母个数或统计最多字母数
- String、java.Util.Date和java.sql.Date之间的转换