hdu 1827 有向图缩点看度数
题意:给一个有向图,选最少的点(同时最小价值),从这些点出发可以遍历所有。
思路:先有向图缩点,成有向树,找入度为0的点即可。
下面给出有向图缩点方法:
用一个数组SCC记录即可,重新编号,1....num,具体方法如下代码详见。
- #include<iostream>
- #include<cstdio>
- #include<vector>
- #include<stack>
- using namespace std;
- int n,m;
- vector<vector<int> >v(10010);
- int vis[10010];int dfn[10010];int low[10010];int times=0;
- int num=0;
- int instack[10010];stack<int>s; //有向图的连通性,用栈。
- int scc[1010]; int w[1010]; int neww[1010];
- int ind[1010];
- void tarjarn(int u)
- {
- dfn[u]=low[u]=++times;
- instack[u]=1;
- s.push(u);
- for(int i=0;i<v[u].size();i++)
- {
- int vv=v[u][i];
- if(!vis[vv])
- {
- vis[vv]=1;
- tarjarn(vv);
- if(low[vv]<low[u])low[u]=low[vv]; //孩子可以到达,我必然也可以到达。
- }
- else if(instack[vv]) //注意,更新时要有在栈中条件,代表该孩子(其实是祖先)我能到达,而且是属于当前SCC。
- {
- if(dfn[vv]<low[u])low[u]=dfn[vv]; //能到达的祖先,所以更新。
- }
- }
- if(dfn[u]==low[u])
- {
- num++;int cur;
- int min=w[u]; //找这个SCC权最小的权。
- do
- {
- cur=s.top();
- if(w[cur]<min)min=w[cur];
- s.pop();
- instack[cur]=0;
- scc[cur]=num;
- }while(cur!=u);
- neww[num]=min;
- }
- }
- int main()
- {
- while(~scanf("%d %d",&n,&m))
- {
- int ta,tb;
- for(int i=0;i<=n;i++)
- {
- v[i].clear();
- neww[i]=ind[i]=w[i]=instack[i]=dfn[i]=low[i]=vis[i]=0;
- }
- times=0;
- for(int i=1;i<=n;i++)
- {
- scanf("%d",&w[i]);
- }
- for(int i=0;i<m;i++)
- {
- scanf("%d %d",&ta,&tb);
- v[ta].push_back(tb);
- }
- num=0;
- for(int i=1;i<=n;i++)
- {
- if(!vis[i])
- { vis[i]=1;
- tarjarn(i);
- }
- }
- int sum=0;int count=0;
- for(int i=1;i<=n;i++) //遍历边。
- {
- for(int j=0;j<v[i].size();j++)
- {
- if(scc[i]!=scc[v[i][j]])
- {
- ind[scc[v[i][j]]]++;
- }
- }
- }
- for(int i=1;i<=num;i++)
- {
- if(ind[i]==0)
- {
- sum+=neww[i];
- count++;
- }
- }
- printf("%d %d\n",count, sum);
- }
- return 0;
- }
hdu 1827 有向图缩点看度数的更多相关文章
- poj 1236+hdu2767 有向图 缩点+看度数(tarjan)
1236题意:一个有向图,1,求至少从几个点出发可以遍历该图,2:,求至少添加多少边,使强连通.而,HDU的只有后面一问. 解;先缩点,第一问只需找所有入度为0的点即可.,第2问,max(入度为0的点 ...
- hdu 3072 有向图缩点成最小树形图计算最小权
题意,从0点出发,遍历所有点,遍历边时候要付出代价,在一个SCC中的边不要付费.求最小费用. 有向图缩点(无需建立新图,,n<=50000,建则超时),遍历边,若不在一个SCC中,用一个数组更新 ...
- hdu 3639 有向图缩点+建反向图+搜索
题意:给个有向图,每个人可以投票(可以投很多人,一次一票),但是一个人只能支持一人一次,支持可以传递,自己支持自己不算,被投支持最多的人. 开始想到缩点,然后搜索,问题是有一点想错了!以为支持按票数计 ...
- HDU 1827 强连通 缩点 Summer Holiday
求出强连通分量,因为强连通中只要有一个人被通知到了,所有人都能被通知到. 缩点以后形成一个DAG,找出那些入度为0的点,累加上它们的权值就是答案.一个点的权值等于SCC中权值最小的那个点. #incl ...
- HDU 4635 (完全图 和 有向图缩点)
题目链接:HDU 4635 题目大意: 给你一个有向图,加有向边,使得这个图是简单有向图.问你最多加多少条有向边. 简单有向图: 1.不存在有向重边. 2.不存在图循环.(注意是不存在 “图” 循环 ...
- Tarjan系列算法总结(hdu 1827,4612,4587,4005)
tarjan一直是我看了头大的问题,省选之前还是得好好系统的学习一下.我按照不同的算法在hdu上选题练习了一下,至少还是有了初步的认识.tarjan嘛,就是维护一个dfsnum[]和一个low[],在 ...
- HDU 1827 Summer Holiday(强连通)
HDU 1827 Summer Holiday 题目链接 题意:中文题 思路:强连通缩点,每一个点的权值为强连通中最小值,然后入度为0的点就是答案 代码: #include <cstdio> ...
- HDU1269(有向图缩点模板题)
迷宫城堡 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- POJ2553( 有向图缩点)
The Bottom of a Graph Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 9779 Accepted: ...
随机推荐
- python基础一 day13 生成器
#生成器函数# def generator():# print(1)# return 'a'## ret = generator()# print(ret) #只要含有yield关键字的函数都是生成器 ...
- Asp.Net Core 入门(十)—— 模型绑定和验证
模型绑定时将Http请求中的数据映射到控制器操作方法上对应的参数,操作方法中的参数可以是简单类型,如整形,字符串等,也可以是复杂类型,如Product,Order等. Asp.Net Core MVC ...
- 获得stixel的gt数据
这是论文中的作者博客地址https://sites.google.com/site/danmlevi/ 这是作者现在的博客地址https://sites.google.com/view/danlevi ...
- Python IDE推荐
八个最佳Python IDE 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs Python是一种功能强大.语言简洁的编程语言.本文向大家推荐8个适合pyt ...
- jQuery-AJAX简介
AJAX是浏览器后台与服务器交换数据的技术,无须加载整个页面的情况下,对页面中的局部进行更新. AJAX=异步的JavaScript与XML(Asynchronous JavaScript and X ...
- 不安装oracle客户端用sqlplus连接数据库
在不安装oracle客户端情况下用sqlplus连接数据库: 1.去官网下载 http://www.oracle.com/technetwork/topics/winx64soft-089540.ht ...
- STATIC 和 CLASS
STATIC 和 CLASS 由 王巍 (@ONEVCAT) 发布于 2015/01/28 Swift 中表示 “类型范围作用域” 这一概念有两个不同的关键字,它们分别是 static 和 class ...
- JS任意文件转base64
<!doctype html><html><head><meta charset="utf-8"><meta name=&qu ...
- Ubuntu 16.04如何使用无线网卡上网
我使用的无线网卡卡托型号是华为E8372h,网卡是普通电信卡(既可以打电话也可以上网). 按照“芯片朝上.缺口朝外.用最大卡”的方法将网卡装入卡托后,紧接着便将卡托插入笔记本对应的USB接口中. 在这 ...
- JSTL 配置
pache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载地址:http:// ...