poj3160

http://poj.org/problem?id=3160

题意读懂是关键,he chould choose to enter and give out a gift and hear the words from the recipient, or bypass the room in silence.通过这句话知道当收礼者给予的反应是负值时可以不加,flymouse decided to choose only one of those rooms as the place to start his journey and follow directed paths to visit one room after another and give out gifts en passant until he could reach no more unvisited rooms.即起点只有一个,且一条路到底,即要我们寻找一条路径的尾节点出度为0,且路径中所有数值为正的节点的和最大。

明显是dfs,用max数组记录每一个节点到出度为0的节点的最大值,但是由于此图是有向图,可能会产生环,因此先用强连通缩点,在dfs找到最到值。

  1 #include <stdio.h>
2 #include <memory.h>
3 #define SIZE 30001
4 #define MAX(a,b) ((a)>(b)?(a):(b))
5 struct node
6 {
7 int end;
8 node *next;
9 }edge[5*SIZE],*head[SIZE],*p,Edge[5*SIZE],*Head[SIZE],*q;
10 int feel[SIZE],root_stack[SIZE],stack[SIZE],init[SIZE],belong[SIZE],sum[SIZE],max[SIZE];
11 bool visit[SIZE];
12 int cnt,father,MAXER;
13 void bulid(int a,int b)
14 {
15 p->end=b;
16 p->next=head[a];
17 head[a]=p++;
18 }
19 void add(int a,int b)
20 {
21 q->end=b;
22 q->next=Head[a];
23 Head[a]=q++;
24 }
25 void Gabow(int key)
26 {
27 root_stack[++root_stack[0]]=stack[++stack[0]]=key;
28 init[key]=++cnt;
29 for(node*tmp=head[key];tmp;tmp=tmp->next)
30 {
31 if(!init[tmp->end])
32 Gabow(tmp->end);
33 else if(!belong[tmp->end])
34 while(init[root_stack[root_stack[0]]]>init[tmp->end])
35 --root_stack[0];
36 }
37 if(root_stack[root_stack[0]]==key)
38 {
39 ++father,--root_stack[0];
40 do
41 {
42 belong[stack[stack[0]]]=father;
43 if(feel[stack[stack[0]]]>0)
44 sum[father]+=feel[stack[stack[0]]];
45 }
46 while(stack[stack[0]--]!=key);
47 }
48 }
49 void dfs(int key)
50 {
51 visit[key]=true;
52 for(node *tmp=Head[key];tmp;tmp=tmp->next)
53 {
54 if(!visit[tmp->end])
55 dfs(tmp->end);
56 max[key]=MAX(max[key],max[tmp->end]);
57 }
58 max[key]+=sum[key];
59 MAXER=MAX(MAXER,max[key]);
60 }
61 void ini()
62 {
63 memset(head,NULL,sizeof(head));
64 memset(Head,NULL,sizeof(Head));
65 memset(visit,false,sizeof(visit));
66 memset(feel,0,sizeof(feel));
67 memset(root_stack,0,sizeof(root_stack));
68 memset(stack,0,sizeof(stack));
69 memset(init,0,sizeof(init));
70 memset(belong,0,sizeof(belong));
71 memset(sum,0,sizeof(sum));
72 memset(max,0,sizeof(max));
73 }
74 int main()
75 {
76 int n,m;
77 while(scanf("%d %d",&n,&m)==2)
78 {
79 for(int i=0;i<n;++i)
80 scanf("%d",&feel[i]);
81 p=edge;
82 for(int i=0,a,b;i<m;++i)
83 {
84 scanf("%d %d",&a,&b);
85 bulid(a,b);
86 }
87 cnt=father=0;
88 for(int i=0;i<n;++i)
89 if(!init[i])
90 Gabow(i);
91 q=Edge;
92 for(int i=0;i<n;++i)
93 for(node*tmp=head[i];tmp;tmp=tmp->next)
94 if(belong[i]!=belong[tmp->end])
95 add(belong[i],belong[tmp->end]);
96 MAXER=-(1<<31);
97 for(int i=1;i<=father;++i)
98 if(!visit[i])
99 dfs(i);
100 printf("%d\n",MAXER);
101 ini();
102 }
103 return 0;
104 }

  

转载于:https://www.cnblogs.com/mengxm-lincf/archive/2011/09/08/2171297.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298084.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

30张不明觉厉的照片,看几遍终于看懂了

全世界只有3.14 % 的人关注了爆炸吧知识网络上很多照片&#xff0c;虽然没经过PS&#xff0c;第一眼还是会觉得诡异。仔细看看才发现....哇噢&#xff01;总觉得她的头上有一撮尖尖的毛&#xff1f;狗狗怎么做得出这个表情&#xff1f;震惊&#xff01;发现没脖子的长颈鹿&…

域名服务器(DNS)工作原理

域名服务器工作原理 引言 只要您在互联网上发送电子邮件或浏览Web&#xff0c;您就会用到域名服务器&#xff0c;而您自己可能都不知道您在使用它们。域名服务器&#xff08;即DNS&#xff09;是互联网的相当重要且完全隐藏的部分&#xff0c;并且很神奇。域名服务器系统在全球…

排序集合的一个小坑

原来一直用SortList&#xff0c;SortedDictionary来作为键值对存储的排序集合来用&#xff0c;心中就默认是以key按ascall排序来存放的&#xff0c;在之前的案例中也没有出现问题&#xff0c;在最近一个demo中&#xff0c;打破了原来的自以为是的认识&#xff0c;因为在key中不…

python distplot 图_Python可视化23 |seaborn.distplot公司单变量分布图(直方图|核密度图),23seaborndistplot...

本文介绍seaborn.distplot绘制单变量分布图&#xff1b;之前文章介绍的核密度图(kernel density estimate (KDE))以及二者结合图。目录本文内容概要直方图核密度图直方图结合核密度图1、seaborn.distplotseaborn.distplot(a, binsNone,histTrue,kdeTrue,rugFalse, fitNone, his…

绘制矩形php,PHP_php绘制一个矩形的方法,本文实例讲述了php绘制一个矩 - phpStudy...

php绘制一个矩形的方法本文实例讲述了php绘制一个矩形的方法。分享给大家供大家参考。具体实现方法如下&#xff1a;//1、创建画布$im imagecreatetruecolor(300,200);//新建一个真彩色图像&#xff0c;默认背景是黑色&#xff0c;返回图像标识符。另外还有一个函数 imagecrea…

爱是天时地利的迷信

1 别人撒娇你撒娇2 据说套着这个白袋子晒鞋鞋就不会发黄了。。3 蚂蚁&#xff1a;为什么要欺负我&#xff01;4 这是天空的心电图吗5 有回应的喜欢真好 6 随主人这事儿原来是真的…7 被别人喜欢时的心理活动图自回忆专用小马甲你点的每个赞&#xff0c;我都认真当成了喜欢

如何做到 byte[] 和 十六进制 互转?

咨询区 alextansc&#xff1a;请问我如何实现将 byte[] 和 十六进制的string 进行互转&#xff1f;回答区 balrob&#xff1a;如果你的程序是基于 .NET5 的&#xff0c;可以使用 Convert 下新增的两个方法 ToHexString 和 FromHexString &#xff0c;参考下面两个方法的定义。/…

转载 Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget

当图片过大&#xff0c;或图片数量较多时使用BitmapFactory解码图片会出java.lang.OutOfMemoryError: bitmap size exceeds VM budget&#xff0c;要想正常使用则需分配更少的内存&#xff0c;具体的解决办法是修改采样值BitmapFactory.Options.inSampleSize&#xff0c;例如&a…

Juniper Firewall多进单出配制实例

Technorati 标签: juniper,多进单出,配置实例,firewallJuniper firewall多進單出配置。想法是這樣的用一台firewall將這幾條ISP線路都接入&#xff0c;再通過一個trunk口出來&#xff0c;通過一台L2 switch劃分出幾個VLAN&#xff0c;分別對應不同的ISP線路。這樣做的好處就不多…

php js 复选框选中,为每个选中的复选框显示相同的一组问题。 (PHP和JS / Jquery)...

你可以这样做&#xff0c;它可以帮助你......HTMLfunction show_ques() {var i $(this).attr(id).substr(-1);if ($(this).is(":checked")) {//get total count of question listvar nQue $("#quelist").find("div[class^que]").length;var is…

刷题≠学好数学,近百位名校名师告诉你,数学是怎么学好的?

▲ 点击查看 数学是个神奇的科目&#xff0c;它存在着一种“梯次掉队”的现象。不是说你低年级的知识学好了&#xff0c;高年级的知识就一定能学好。相信大家都有这种体会&#xff1a;一二年级孩子成绩不相上下&#xff0c;但到三四年级的时候&#xff0c;有一批学生的数学成绩…

android 系统之ContentProvider

基于上一篇的数据库操作&#xff0c;又写了一个ContentProvider的示例。把SQLiter 的数据提供出去供别的项目进行访问。 这一篇的代码要求熟悉SQLiter 的API. 首先&#xff0c;我们编写一个类extents ContentProvider &#xff0c;重写他的方法。 URI 在http 中我们称为统一资源…

你是中层管理者?嗯,一个表面看似风光,实际却很 “鸡肋” 的重要岗位

这是头哥侃码的第246篇原创每年的六七月份&#xff0c;上海都会进入梅雨季节。这段时期的上海天气就好比大小姐的脾气&#xff0c;阴晴不定&#xff0c;完全看心情做事&#xff0c;心情好的时候&#xff0c;给你个阳光&#xff0c;让你的生活和休闲时光多一些灿烂&#xff0c;心…

20150203一些移动端H5小bug解决

都是一些我也不知道为什么会有的bug。 1. 在三星note2&#xff0c;小米2&#xff0c;页面加载后&#xff0c;页面有黑块. 那么提高被盖住的部分z-index。 2. iphone5 &#xff0c;ios7.0.4&#xff0c;上文字显示不出 那么就先hide&#xff0c;setTimeout几百毫秒再show

重温SQL——行转列,列转行(转:http://www.cnblogs.com/kerrycode/archive/2010/07/28/1786547.html)...

行转列&#xff0c;列转行是我们在开发过程中经常碰到的问题。行转列一般通过CASE WHEN 语句来实现&#xff0c;也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。 用传统的方法&#xff0c;比较好理解。层次清晰&#xff0c;而且比较习惯。 但是PIVOT 、UNPIVOT提供的语法…

php正则获取标签,PHP通过正则匹配中文字符 过滤html标签 获取文本内容

正则匹配中文汉字根据页面编码不同而略有区别&#xff1a;GBK/GB2312编码&#xff1a;[x80-xff] 或 [xa1-xff]UTF-8编码&#xff1a;[x{4e00}-x{9fa5}]/u[php]$str "账单123";//GBK/GB2312使用&#xff1a;preg_match_all("/[\x80-\xff]/", $str, $chines…

python监控机票价格_喜欢旅行又怕吃土?让Python来爬取最便宜机票吧!

图源&#xff1a;videoblocks.com你喜欢旅行吗&#xff1f;这个问题通常会得到一个肯定的答案&#xff0c;随后引出一两个有关之前冒险经历的故事。大多数人都认为旅行是体验新文化和开阔视野的好方法。但如果问题是“你喜欢搜索机票的过程吗&#xff1f;”也许话题就到此为止了…

伤不起的指针

虽然知道怎么做&#xff0c;但是还是做一遍啦。结果调试了两个多小时&#xff0c;真崩溃。 /* * * * Filename: intlist.h * * Description: * * Version: 1.0 * Created: 09/16/2011 02:56:13 AM * Revision: none * Compiler: gc…

[禅悟人生]尊严非席, 不可卷起

日本江户时期是一个社会很不稳定的时期&#xff0c;浪人武士依仗强力横行无忌。 有一个著名的茶师跟随着一个显赫的主人。 有一天主人要去京城办事&#xff0c;舍不得离开茶师&#xff0c;就说&#xff0c;你跟我去吧&#xff0c;好每天给我泡茶。茶师很害怕&#xff0c;对主人…

要男女朋友有什么用?

1 题&#xff1a;我不要面子的嘛&#xff01;2 狗都有人给撑伞了。。3 这大概就是传说中的一见钟情吧4 5 南方人说话有多软糯6 男女朋友有什么用你点的每个赞&#xff0c;我都认真当成了喜欢