当前位置: 首页 > news >正文

装修网站免费漯河英文网站建设

装修网站免费,漯河英文网站建设,gdrp wordpress插件,广东东莞自己建站教程正题 题目链接:https://www.luogu.com.cn/problem/AT3968 题目大意 给出nnn个点的一棵树#xff0c;然后给出mmm条路径。每条边的权值是它是否又被正向经过是否又被反向经过#xff0c;给每条路径定向使得所有边的权值和最大。输出方案。 1≤n,m≤20001\leq n,m\leq 20001≤…正题 题目链接:https://www.luogu.com.cn/problem/AT3968 题目大意 给出nnn个点的一棵树然后给出mmm条路径。每条边的权值是它是否又被正向经过是否又被反向经过给每条路径定向使得所有边的权值和最大。输出方案。 1≤n,m≤20001\leq n,m\leq 20001≤n,m≤2000 解题思路 显然第一条路径我们可以随意定向然后与它同向的且经过重复边的路径我们取反其中一条然后再以这条路径继续去取反别的相交路径。 这样下去会发现显然两条路径相交的部分都会被统计两次也就是如果一条边被经过了两次那么这里的贡献就是222否则被经过一次就是111也就是答案能到达上界。 但是这样构造显然容易出问题考虑一个更加系统的构造方法。 先把所有路径挂到两端点上然后我们每次找到一个叶子节点考虑这个叶子节点 没有路径那么直接删除这个叶子。有一条路径那么这条路径的方向和这个叶子无关直接把路径丢到父节点然后删除这个叶子。有两条或者以上路径此时我们指定任意两条边反向但是这两条边谁正谁反还未确定假设是(x,a),(x,b)(x,a),(x,b)(x,a),(x,b)那我们新建一条路径(a,b)(a,b)(a,b)也就是这两条路径在分叉点后产生的新路径然后这两条再根据这条路径确定方向。 用setsetset维护端点的路径删掉的路径记得在对应的节点也删掉细节有点多慢慢调。 时间复杂度O(n2log⁡n)O(n^2\log n)O(n2logn) code #includecstdio #includecstring #includealgorithm #includeset #includequeue #define mp(x,y) make_pair(x,y) using namespace std; const int N2100,M5100; struct node{int to,next; }a[N1]; int n,m,tot,c[N],ls[N],in[N],fa[N]; int ps[N],pt[N],s[M],t[M]; queueint q;setint p[M]; pairint,int ans[M]; void addl(int x,int y){a[tot].toy;a[tot].nextls[x];ls[x]tot;return; } void dfs(int x){for(int ils[x];i;ia[i].next){int ya[i].to;if(yfa[x])continue;fa[y]x;dfs(y);in[x];}return; } bool work(int x,int z,int fr){if(xz)return 1;for(int ils[x];i;ia[i].next){int ya[i].to;if(yfr)continue;int wwork(y,z,x);if(w){if(yfa[x])c[x];else c[y];return 1;}}return 0; } void given(int x){int i*p[x].begin();p[x].erase(i);p[fa[x]].insert(i);if(i0)s[i]fa[x];else t[-i]fa[x];iabs(i);if(s[i]t[i]){p[s[i]].erase(i);p[s[i]].erase(-i);}return; } int main() {scanf(%d%d,n,m);for(int i1;in;i){int x,y;scanf(%d%d,x,y);addl(x,y);addl(y,x);}totm;dfs(1);int sum0;for(int i1;im;i){scanf(%d%d,s[i],t[i]);ps[i]s[i];pt[i]t[i];p[s[i]].insert(i);p[t[i]].insert(-i);work(s[i],t[i],0);}for(int i2;in;i){if(!in[i])q.push(i);summin(c[i],2);}while(!q.empty()){int xq.front();q.pop();if(x1)break;in[fa[x]]--;if(!in[fa[x]])q.push(fa[x]);if(p[x].size()1)given(x);else if(p[x].size()1){tot;int i*p[x].begin();p[x].erase(i);int j*p[x].begin();p[x].erase(j);s[tot](i0)?t[i]:s[-i];t[tot](j0)?t[j]:s[-j];if(s[tot]!t[tot])p[s[tot]].insert(tot),p[t[tot]].insert(-tot);p[s[tot]].erase(-i);p[t[tot]].erase(-j);ans[abs(i)]mp(tot,-i/abs(i));ans[abs(j)]mp(tot, j/abs(j));while(!p[x].empty())given(x);}}printf(%d\n,sum);for(int itot;i1;i--){if(ans[i].second!0)ans[i].firstans[ans[i].first].first*ans[i].second;else ans[i].first1;}for(int i1;im;i){if(ans[i].first0)printf(%d %d\n,ps[i],pt[i]);else printf(%d %d\n,pt[i],ps[i]);}return 0; }
http://www.yutouwan.com/news/363449/

相关文章:

  • 网站生成小程序目前电商平台有哪些
  • 广西建设厅官方网站电话专业的网站开发联系方式
  • 合肥网站制作需做珠宝建个网站推广怎么样
  • 哪个网站做图片外链商标logo图片
  • 自己做游戏app的网站吗中国网站模板免费下载
  • 湘潭专业网站建设湘潭振企专业公司做网站怎么推广
  • 类似谷德设计网的网站海口大禾互联网科技有限公司
  • 毕设给学校做网站邮编域名做网站
  • 凡科做公司网站怎么收费电脑中怎样安装wordpress
  • 网站被镜像怎么做网站优化排名易下拉系统
  • 公司的网站费怎样做会计分录一个公司可以做2个网站么
  • 英文网站建设需求站长工具站长之家
  • 网站刷流量有什么用宁波网络营销平台
  • 常用的电子商务网站开发技术网站后台管理系统
  • 做艺术的网站天津免费网站建站模板
  • 建立自己的网站用花钱吗贵阳建网站公司
  • 对电子商务网站建设与管理的心得合肥 电子商务 网站推广
  • 住房与城乡建设部建设环境工程技术中心网站网站悬浮窗口
  • 网站建设风险是什么网站开发 用什么框架
  • 刚做淘客没有网站标书制作员是干什么的
  • 随州做网站生意怎么样营销自动化平台
  • 网站和软件有什么区别余姚做百度网站
  • 网站seo查询工具php怎么做网站程序
  • 网站后台制作这么做小程序开发外包服务公司
  • 网站建设教程视频百度云公司建设网站价格表
  • appcan 手机网站开发成品短视频网站源码搭建
  • 网站列表页怎么做的wordpress里能加及时通讯么
  • 商会网站建设开发WordPress建站布置
  • 精美网站制作wordpress rt thems10
  • 专业网站建设长春网站建设设计