P2860 [USACO06JAN]冗余路径Redundant Paths tarjan
题目链接
https://www.luogu.org/problemnew/show/P2860
思路
缩点,之后就成了个树一般的东西了
然后(叶子节点+1)/2就是答案,好像贪心的样子,lmc好像讲过诶
cpp #include <iostream> #include <cstdio> #include <vector> #include <bits/stdc++.h> #define iter vector<int>::iterator using namespace std; const int N=1e5+7; int read() { int x=0,f=1;char s=getchar(); for(;s>'9'||s<'0';s=getchar()) if(s=='-') f=-1; for(;s>='0'&&s<='9';s=getchar()) x=x*10+s-'0'; return x*f; } int n,m; vector<int> G[N]; int dfn[N],low[N],SD,stak[N],top,vis[N],belong[N]; void tarjan(int u,int fa) { dfn[u]=low[u]=++SD; vis[u]=1; stak[++top]=u; for(iter it=G[u].begin();it!=G[u].end();++it) { if(*it==fa) continue; if(!dfn[*it]) { tarjan(*it,u); low[u]=min(low[u],low[*it]); } else if(vis[*it]) low[u]=min(low[u],dfn[*it]); } if(low[u]==dfn[u]) { belong[0]++; while(stak[top]!=u) { belong[stak[top]]=belong[0]; vis[stak[top]]=0; top--; } belong[u]=belong[0]; vis[u]=0; top--; } } int ru[N]; map<pair<int,int>,int> hasH; int main() { n=read(),m=read(); for(int i=1;i<=m;++i) { int x=read(),y=read(); if(hasH.count(make_pair(x,y))) continue; hasH[make_pair(x,y)]=1; G[x].push_back(y); G[y].push_back(x); } for(int i=1;i<=n;++i) if(!dfn[i]) tarjan(i,0); for(int i=1;i<=n;++i) { for(iter it=G[i].begin();it!=G[i].end();++it) { if(belong[i]!=belong[*it]) { ru[belong[i]]++,ru[belong[*it]]++; } } } int ans=0; for(int i=1;i<=n;++i) if(ru[i]==2) ans++; printf("%d\n",(ans+1)/2); return 0; }
P2860 [USACO06JAN]冗余路径Redundant Paths tarjan的更多相关文章
- 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths(tarjan求边双联通分量)
题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...
- luogu P2860 [USACO06JAN]冗余路径Redundant Paths |Tarjan
题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...
- 洛谷 P2860 [USACO06JAN]冗余路径Redundant Paths 解题报告
P2860 [USACO06JAN]冗余路径Redundant Paths 题目描述 为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们 ...
- luogu P2860 [USACO06JAN]冗余路径Redundant Paths
题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1- ...
- 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths
题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...
- 【luogu P2860 [USACO06JAN]冗余路径Redundant Paths】 题解
题目链接:https://www.luogu.org/problemnew/show/P2860 考虑在无向图上缩点. 运用到边双.桥的知识. 缩点后统计度为1的点. 度为1是有一条路径,度为2是有两 ...
- LUOGU P2860 [USACO06JAN]冗余路径Redundant Paths (双联通,缩点)
传送门 解题思路 刚开始是找的桥,后来发现这样不对,因为一条链就可以被卡.后来想到应该缩点后找到度数为1 的点然后两两配对. #include<iostream> #include< ...
- P2860 [USACO06JAN]冗余路径Redundant Paths
题解: 首先要边双缩点这很显然 然后变成树上问题 发现dp,dfs好像不太对 考虑一下度数 发现只要在度数为1的点之间连边 但我好像不太会证明这个东西.. 网上也没有看到比较正确的证明方法和连边策略. ...
- 缩点【洛谷P2860】 [USACO06JAN]冗余路径Redundant Paths
P2860 [USACO06JAN]冗余路径Redundant Paths 为了从F(1≤F≤5000)个草场中的一个走到另一个,贝茜和她的同伴们有时不得不路过一些她们讨厌的可怕的树.奶牛们已经厌倦了 ...
随机推荐
- Delegate,Action,Func,匿名方法,匿名委托,事件
一.委托Delegate 一般的方法(Method)中,我们的参数总是string,int,DateTime...这些基本的数据类型(或者没有参数),比如 public void HelloWorld ...
- activity bj draw 流程图
- MYSQL导入数据时,出现错误:Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1
Incorrect string value: '\xF0\x9F...' for column 'XXX' at row 1 这个问题,原因是UTF-8编码有可能是两个.三个.四个字节.Emoji表 ...
- tp视图模板
<?php namespace Home\Controller; use Think\Controller; class IndexController extends Controller { ...
- rpgmakermv(8) XY_TitleMenu插件
插件作用:设置标题 /*: * @plugindesc v1.00 Display Multiple Menu in Title Screen. * @author XueYu Plugins * * ...
- Yii2 Restful api自定义资源
- JDBC操作数据库步骤
2018-11-04 20:23:24开始写 1.加载驱动程序(Class.forName) 2.建立连接获取数据库连接对象(DriverManager.getConnection) 3.向数据库发 ...
- JOptionPane
2018-10-30 14:44:43 开始写 作者:tjk123456 来源:CSDN 原文链接 建议阅读官方资料:https://docs.oracle.com/javase/7/docs/api ...
- 【转】Requests 官方中文文档 - 快速上手
迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Requests ...
- Chess (SG + 状态压缩预处理)
#include<bits/stdc++.h> #define bit(t) (1 << t) using namespace std; <<; ;//k是集合s的 ...