﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-第七天堂-文章分类-图论</title><link>http://www.cppblog.com/lvlawliet/category/17929.html</link><description>VIM</description><language>zh-cn</language><lastBuildDate>Sat, 15 Oct 2011 18:25:38 GMT</lastBuildDate><pubDate>Sat, 15 Oct 2011 18:25:38 GMT</pubDate><ttl>60</ttl><item><title>HDU4009:Transfer water</title><link>http://www.cppblog.com/lvlawliet/articles/158401.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:20:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158401.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158401.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158401.html</trackback:ping><description><![CDATA[<div><span class="Apple-style-span" style="font-family: 'Times New Roman'; line-height: normal; font-size: medium; "><h1 style="color: #1a5cc8; text-align: center; ">Transfer water</h1><font><strong><span style="font-family: Arial; font-size: 12px; font-weight: bold; color: green; ">Time Limit: 5000/3000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 65768/65768 K (Java/Others)<br />Total Submission(s): 1770&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s): 650<br /></span></strong></font><br /><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Problem Description</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; ">XiaoA lives in a village. Last year flood rained the village. So they decide to move the whole village to the mountain nearby this year. There is no spring in the mountain, so each household could only dig a well or build a water line from other household. If the household decide to dig a well, the money for the well is the height of their house multiplies X dollar per meter. If the household decide to build a water line from other household, and if the height of which supply water is not lower than the one which get water, the money of one water line is the Manhattan distance of the two households multiplies Y dollar per meter. Or if the height of which supply water is lower than the one which get water, a water pump is needed except the water line. Z dollar should be paid for one water pump. In addition,therelation of the households must be considered. Some households may do not allow some other households build a water line from there house. Now given the 3&#8208;dimensional position (a, b, c) of every household the c of which means height, can you calculate the minimal money the whole village need so that every household has water, or tell the leader if it can&#8217;t be done.</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Input</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; ">Multiple cases.&nbsp;<br />First line of each case contains 4 integers n (1&lt;=n&lt;=1000), the number of the households, X (1&lt;=X&lt;=1000), Y (1&lt;=Y&lt;=1000), Z (1&lt;=Z&lt;=1000).&nbsp;<br />Each of the next n lines contains 3 integers a, b, c means the position of the i&#8208;th households, none of them will exceeded 1000.&nbsp;<br />Then next n lines describe the relation between the households. The n+i+1&#8208;th line describes the relation of the i&#8208;th household. The line will begin with an integer k, and the next k integers are the household numbers that can build a water line from the i&#8208;th household.&nbsp;<br />If n=X=Y=Z=0, the input ends, and no output for that.&nbsp;</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Output</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; ">One integer in one line for each case, the minimal money the whole village need so that every household has water. If the plan does not exist, print &#8220;poor XiaoA&#8221; in one line.&nbsp;</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Sample Input</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; "><pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; "><div style="font-family: 'Courier New', Courier, monospace; ">2 10 20 30
1 3 2
2 4 1
1 2
2 1 2
0 0 0 0</div></pre></div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Sample Output</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; "><pre style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; "><div style="font-family: 'Courier New', Courier, monospace; ">30

<div style="padding-top: 6px; padding-right: 6px; padding-bottom: 6px; padding-left: 6px; font-family: 'Times New Roman'; font-size: 14px; background-color: #f4fbff; border-top-color: #b7cbff; border-right-color: #b7cbff; border-bottom-color: #b7cbff; border-left-color: #b7cbff; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; "><div style="font-family: Arial; font-weight: bold; color: #7ca9ed; border-bottom-color: #b7cbff; border-bottom-width: 1px; border-bottom-style: dashed; "><em>Hint</em></div>In  3&#8208;dimensional  space  Manhattan  distance  of  point  A  (x1,  y1,  z1)  and  B(x2,  y2,  z2)  is |x2&#8208;x1|+|y2&#8208;y1|+|z2&#8208;z1|. 
</div><em style="font-size: 1px; "> </em></div></pre></div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Source</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; "><a href="http://acm.hdu.edu.cn/search.php?field=problem&amp;key=The%2036th%20ACM/ICPC%20Asia%20Regional%20Dalian%20Site%20%A1%AA%A1%AA%20Online%20Contest&amp;source=1&amp;searchmode=source" style="color: #1a5cc8; text-decoration: none; ">The 36th ACM/ICPC Asia Regional Dalian Site &#8212;&#8212; Online Contest</a></div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><br /><div class="panel_title" align="left" style="padding-right: 14px; padding-left: 14px; height: 38px; background-image: url(http://acm.hdu.edu.cn/images/panel-title.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: transparent; color: #7ca9ed; font-size: 18px; font-family: Arial; font-weight: bold; background-position: 0% 100%; background-repeat: no-repeat no-repeat; ">Recommend</div><div class="panel_content" style="padding-right: 20px; padding-left: 20px; height: auto; background-image: url(http://acm.hdu.edu.cn/images/panel-content.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font-size: 14px; font-family: 'Times New Roman'; text-align: left; background-repeat: no-repeat repeat; ">lcy</div><div class="panel_bottom" style="height: auto; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; background-image: url(http://acm.hdu.edu.cn/images/panel-bottom.png); background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0% 0%; background-repeat: no-repeat no-repeat; ">&nbsp;</div><div><br /></div></span>今年大连赛区网络赛一道题.....我怎么一点印象也没有呢.....<br />一道赤裸的最小树形图，除了数据有点大而已.....<br />思路：因为没有根，所以虚拟一个根，所有点和这个根连线，权值是该点造井的价格，这样以这个根出发，构造出来的最小树形图就是最小的费用了。<br />代码：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000ff; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;maxn&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1100</span><span style="color: #000000; ">;<br /></span><span style="color: #0000ff; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;maxm&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1100000</span><span style="color: #000000; ">;<br /></span><span style="color: #0000ff; ">const</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;maxint&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0x3fffffff</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000ff; ">struct</span><span style="color: #000000; ">&nbsp;edge<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;v,&nbsp;w;<br />&nbsp;&nbsp;&nbsp;&nbsp;edge(){}<br />&nbsp;&nbsp;&nbsp;&nbsp;edge(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u1,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v1,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;w1)&nbsp;:&nbsp;u(u1),&nbsp;v(v1),&nbsp;w(w1){}<br />}&nbsp;e[maxm];<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;root,&nbsp;n,&nbsp;edgeNum,&nbsp;vis[maxn],&nbsp;pre[maxn],&nbsp;belong[maxn],&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[maxn];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a[maxn],&nbsp;b[maxn],&nbsp;c[maxn];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;Abs(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;a&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">?</span><span style="color: #000000; ">&nbsp;a&nbsp;:&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">a;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;Dis(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;Abs(a[i]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;a[j])&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;Abs(b[i]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;b[j])&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;Abs(c[i]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;c[j]);<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;solve()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;k,&nbsp;num,&nbsp;sum&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;maxint;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;edgeNum;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[e[i].v]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;e[i].w&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;e[i].u&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;e[i].v)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[e[i].v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e[i].u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[e[i].v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e[i].w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(vis,&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(vis));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(belong,&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(belong));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[root]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(num&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(vis[j]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;belong[j]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;root)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vis[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pre[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(vis[j]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pre[j];&nbsp;k&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;j;&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pre[k])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;belong[k]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;num;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;belong[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;num</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">num)&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;sum;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(belong[i]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;belong[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;num</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;edgeNum;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;e[i].v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[i].u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;belong[e[i].u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[i].v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;belong[e[i].v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[i].w&nbsp;</span><span style="color: #000000; ">-=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">in</span><span style="color: #000000; ">[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;num;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;belong[root];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;sum;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;x,&nbsp;y,&nbsp;z,&nbsp;i,&nbsp;j,&nbsp;k,&nbsp;ii,&nbsp;d;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">z)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;EOF)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">n&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">x&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">y&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">z)&nbsp;</span><span style="color: #0000ff; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(edgeNum&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a[i],&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b[i],&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">c[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[edgeNum</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;edge(</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;i,&nbsp;c[i]&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">k);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(k</span><span style="color: #000000; ">--</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">ii);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;ii)&nbsp;</span><span style="color: #0000ff; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;Dis(i,&nbsp;ii);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(c[i]&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;c[ii])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[edgeNum</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;edge(i,&nbsp;ii,&nbsp;d&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[edgeNum</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;edge(i,&nbsp;ii,&nbsp;d&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;y&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;z);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;root&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;solve());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div></div><img src ="http://www.cppblog.com/lvlawliet/aggbug/158401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:20 <a href="http://www.cppblog.com/lvlawliet/articles/158401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU2121:Ice_cream’s world II</title><link>http://www.cppblog.com/lvlawliet/articles/158400.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:18:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158400.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158400.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158400.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158400.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158400.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Ice_cream&#8217;s world IITime Limit: 3000/1000 MS (Java/Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 938&nbsp;&nbsp;&nbsp;&nbsp;Accepted Submission(s):...&nbsp;&nbsp;<a href='http://www.cppblog.com/lvlawliet/articles/158400.html'>阅读全文</a><img src ="http://www.cppblog.com/lvlawliet/aggbug/158400.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:18 <a href="http://www.cppblog.com/lvlawliet/articles/158400.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ3164:Command Network</title><link>http://www.cppblog.com/lvlawliet/articles/158399.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:18:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158399.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158399.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158399.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158399.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158399.html</trackback:ping><description><![CDATA[<div><span class="Apple-style-span" style="font-family: 'AR PL UKai CN'; font-size: medium; "><table border="0" width="100%" background="http://poj.org/images/table_back.jpg"><tbody><tr><td><div style="text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Command Network</div><div style="text-align: center; font-family: Arial, Helvetica, sans-serif; font-size: 12pt; "><table align="center"><tbody><tr><td><strong>Time Limit:</strong>&nbsp;1000MS</td><td width="10px"></td><td><strong>Memory Limit:</strong>&nbsp;131072K</td></tr><tr><td><strong>Total Submissions:</strong>&nbsp;7267</td><td width="10px"></td><td><strong>Accepted:</strong>&nbsp;2160</td></tr></tbody></table></div><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Description</p><div style="font-family: 'Times New Roman', Times, serif; font-size: 12pt; "><p>After a long lasting war on words, a war on arms finally breaks out between littleken&#8217;s and KnuthOcean&#8217;s kingdoms. A sudden and violent assault by KnuthOcean&#8217;s force has rendered a total failure of littleken&#8217;s command network. A provisional network must be built immediately. littleken orders snoopy to take charge of the project.</p><p>With the situation studied to every detail, snoopy believes that the most urgent point is to enable littenken&#8217;s commands to reach every disconnected node in the destroyed network and decides on a plan to build a unidirectional communication network. The nodes are distributed on a plane. If littleken&#8217;s commands are to be able to be delivered directly from a node A to another node B, a wire will have to be built along the straight line segment connecting the two nodes. Since it&#8217;s in wartime, not between all pairs of nodes can wires be built. snoopy wants the plan to require the shortest total length of wires so that the construction can be done very soon.</p></div><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Input</p><div style="font-family: 'Times New Roman', Times, serif; font-size: 12pt; "><p>The input contains several test cases. Each test case starts with a line containing two integer&nbsp;<em>N</em>&nbsp;(<em>N</em>&nbsp;&#8804; 100), the number of nodes in the destroyed network, and&nbsp;<em>M</em>&nbsp;(<em>M</em>&nbsp;&#8804; 10<sup>4</sup>), the number of pairs of nodes between which a wire can be built. The next&nbsp;<em>N</em>&nbsp;lines each contain an ordered pair&nbsp;<em>x<sub>i</sub></em>&nbsp;and&nbsp;<em>y<sub>i</sub></em>, giving the Cartesian coordinates of the nodes. Then follow&nbsp;<em>M</em>&nbsp;lines each containing two integers&nbsp;<em>i</em>&nbsp;and&nbsp;<em>j</em>&nbsp;between 1 and&nbsp;<em>N</em>&nbsp;(inclusive) meaning a wire can be built between node&nbsp;<em>i</em>&nbsp;and node&nbsp;<em>j</em>&nbsp;for unidirectional command delivery from the former to the latter. littleken&#8217;s headquarter is always located at node 1. Process to end of file.</p></div><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Output</p><div style="font-family: 'Times New Roman', Times, serif; font-size: 12pt; "><p>For each test case, output exactly one line containing the shortest total length of wires to two digits past the decimal point. In the cases that such a network does not exist, just output &#8216;<code>poor snoopy</code>&#8217;.</p></div><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Sample Input</p><pre style="font-family: 'Courier New', Courier, monospace; font-size: 12pt; ">4 6 <br />0 6 <br />4 6 <br />0 0 <br />7 20 <br />1 2 <br />1 3 <br />2 3 <br />3 4 <br />3 1 <br />3 2 <br />4 3 <br />0 0 <br />1 0 <br />0 1 <br />1 2 <br />1 3 <br />4 1 <br />2 3</pre><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Sample Output</p><pre style="font-family: 'Courier New', Courier, monospace; font-size: 12pt; ">31.19 <br />poor snoopy</pre><p style="text-align: left; font-family: Arial, Helvetica, sans-serif; font-size: 18pt; font-weight: bold; color: blue; ">Source</p><div style="font-family: 'Times New Roman', Times, serif; font-size: 12pt; "><a href="http://poj.org/searchproblem?field=source&amp;key=POJ+Monthly--2006.12.31" style="text-transform: none; text-decoration: none; ">POJ Monthly--2006.12.31</a>, galaxy</div></td></tr></tbody></table><br />裸的最小树形图，我就是为了检验模板....结果还错了.....%.2lf在POJ上用G++会莫名的挂掉，所以用C++就行了。<br />代码：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;MAXN&nbsp;110</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;INF&nbsp;1e30</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br />inline&nbsp;</span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;sqr(</span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;x)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;x&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;x;<br />}<br /><br /></span><span style="color: #0000ff; ">struct</span><span style="color: #000000; ">&nbsp;point<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;_x,&nbsp;_y;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;dist_with(</span><span style="color: #0000ff; ">const</span><span style="color: #000000; ">&nbsp;point&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">rh)&nbsp;</span><span style="color: #0000ff; ">const</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;sqrt(sqr(_x&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;rh._x)&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;sqr(_y&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;rh._y));<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;po[MAXN];<br /><br /></span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;g[MAXN][MAXN];<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;pre[MAXN];<br /></span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">&nbsp;is_out[MAXN];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;vis[MAXN],&nbsp;vcnt;<br /><br /></span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;solve(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;root)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(is_out,&nbsp;</span><span style="color: #0000ff; ">false</span><span style="color: #000000; ">,&nbsp;n);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">double</span><span style="color: #000000; ">&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;k;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;root&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">is_out[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">is_out[j]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;g[pre[i]][i]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;g[j][i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pre[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;j;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(pre[i]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;i)&nbsp;</span><span style="color: #0000ff; ">throw</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;root&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">is_out[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vis[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">vcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(vis[pre[j]]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;vcnt&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;pre[j]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;root)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pre[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vis[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;vcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(pre[j]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;n)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;root&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">!</span><span style="color: #000000; ">is_out[j])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;g[pre[j]][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">do</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_out[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;g[pre[j]][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pre[j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(vis[j]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;vcnt)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;k&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">k)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">is_out[k])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(g[i][k]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;g[j][k])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[i][k]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g[j][k];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(g[k][i]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;g[k][j]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;g[pre[j]][j]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;g[k][j]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;INF)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[k][i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g[k][j]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;g[pre[j]][j];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;is_out[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n,&nbsp;m;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;EOF)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[i][j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;INF;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%lf%lf</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">po[i]._x,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">po[i]._y);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;m;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(a&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;b)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[a&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][b&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;po[a&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">].dist_with(po[b&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">try</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%.2lf\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;solve(n,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">catch</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">poor&nbsp;snoopy\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div></span></div><img src ="http://www.cppblog.com/lvlawliet/aggbug/158399.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:18 <a href="http://www.cppblog.com/lvlawliet/articles/158399.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOJ3316：Game</title><link>http://www.cppblog.com/lvlawliet/articles/158398.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:17:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158398.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158398.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158398.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158398.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158398.html</trackback:ping><description><![CDATA[<div><div>传送门：http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3726<br /><br />一道看似博弈论的题，其实就是模板题而已。<br /><br />分析：<br />平面上N个点，两个人轮流取点，而且规定当前取的点和上一个取的点的曼哈顿距离要小于L，所以，点可以看成两两成对消去。<br />这也就转成了一般图匹配，如果存在完美匹配，那么后手的人总可以取完，如果不存在，那么先手的人可以拿一个孤立点，这样第二个人要么没有匹配点，要么只能拆到一个匹配对，但这样又造成了孤立点。<br /><br />网上有个人拿二分图匹配过了....看来数据很弱.....<br />代码：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; background-color: #eeeeee; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;MAXN&nbsp;450</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span>&nbsp;<span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;x[MAXN],&nbsp;y[MAXN];<br /><br /></span><span style="color: #0000ff; ">struct</span><span style="color: #000000; ">&nbsp;Graph<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">&nbsp;mat[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">][MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">&nbsp;inque[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;que[MAXN],&nbsp;head,&nbsp;tail;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;match[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;father[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;init(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_n;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[i]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[i][j]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;pop()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;que[head</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;push(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;x)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que[tail</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inque[x]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;add_edge(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;b)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[a][b]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mat[b][a]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;inpath[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">static</span>&nbsp;<span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;pcnt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;find_ancestor(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">pcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inpath[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[match[u]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">true</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(inpath[v]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;pcnt)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[match[v]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;inblossom[MAXN&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">static</span>&nbsp;<span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;bcnt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;reset(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;anc)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;contract(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;anc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;find_ancestor(u,&nbsp;v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(u,&nbsp;anc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(v,&nbsp;anc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;bcnt)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;anc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">inque[i])&nbsp;push(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;find_augment(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;start)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[i]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inque[i]&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;tail&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;push(start);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(head&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;tail)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;v&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">v)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(mat[u][v]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span>&nbsp;<span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span>&nbsp;<span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;match[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(v&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;start&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(match[v]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;father[match[v]]))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contract(u,&nbsp;v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(father[v]&nbsp;</span><span style="color: #000000; ">==</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(match[v])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(match[v]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;augment(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;finish)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;finish,&nbsp;v,&nbsp;w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;graph_max_match()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(match[i]&nbsp;</span><span style="color: #000000; ">==</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;finish&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;find_augment(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(finish)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;augment(finish);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span>&nbsp;<span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;g;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;Graph&nbsp;::&nbsp;bcnt&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;Graph&nbsp;::&nbsp;pcnt&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;dis(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;l)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;d;<br />&nbsp;&nbsp;&nbsp;&nbsp;d&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;abs(x[i]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;x[j])&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;abs(y[i]&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;y[j]);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(d&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;l)&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span>&nbsp;<span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;EOF)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;l;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.init(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">x[i],&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">y[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">l);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">+</span>&nbsp;<span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(dis(i,&nbsp;j,&nbsp;l))&nbsp;g.add_edge(i,&nbsp;j);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;sum;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;g.graph_max_match();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(sum&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;n)&nbsp;puts(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">YES</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; ">&nbsp;puts(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">NO</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span>&nbsp;<span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div></div></div><img src ="http://www.cppblog.com/lvlawliet/aggbug/158398.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:17 <a href="http://www.cppblog.com/lvlawliet/articles/158398.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>URAL1099:Work Scheduling(任意图匹配，带花树)</title><link>http://www.cppblog.com/lvlawliet/articles/158396.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:16:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158396.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158396.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158396.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158396.html</trackback:ping><description><![CDATA[<div><span class="Apple-style-span" style="font-family: 'AR PL UKai CN'; line-height: normal; font-size: medium; "><h2 class="problem_title" style="color: #1a5cc8; font-size: 2em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; text-align: center; ">1099. Work Scheduling</h2><div class="problem_limits" style="line-height: 1.4em; margin-top: 0px; margin-right: 0px; margin-bottom: 14px; margin-left: 0px; text-align: center; ">Time Limit: 0.5 second<br />Memory Limit: 16 MB</div><div id="problem_text"><div class="problem_par" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; line-height: 1.4em; "><div class="problem_par_normal" style="text-align: justify; ">There is certain amount of night guards that are available to protect the local junkyard from possible junk robberies. These guards need to scheduled in pairs, so that each pair guards at different night. The junkyard CEO ordered you to write a program which given the guards characteristics determines the maximum amount of scheduled guards (the rest will be fired). Please note that each guard can be scheduled with only one of his colleagues and no guard can work alone.</div></div><h3 class="problem_subtitle" style="color: #1a5cc8; margin-top: 14px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; ">Input</h3><div class="problem_par" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; line-height: 1.4em; "><div class="problem_par_normal" style="text-align: justify; ">The first line of the input contains one number&nbsp;<em>N</em>&nbsp;&#8804; 222 which is the amount of night guards. Unlimited number of lines consisting of unordered pairs (<em>i</em>,&nbsp;<em>j</em>) follow, each such pair means that guard #<em>i</em>&nbsp;and guard #<em>j</em>&nbsp;can work together, because it is possible to find uniforms that suit both of them (The junkyard uses different parts of uniforms for different guards i.e. helmets, pants, jackets. It is impossible to put small helmet on a guard with a big head or big shoes on guard with small feet). The input ends with Eof.</div></div><h3 class="problem_subtitle" style="color: #1a5cc8; margin-top: 14px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; ">Output</h3><div class="problem_par" style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; line-height: 1.4em; "><div class="problem_par_normal" style="text-align: justify; ">You should output one possible optimal assignment. On the first line of the output write the even number&nbsp;<em>C</em>, the amount of scheduled guards. Then output&nbsp;<em>C</em>/2 lines, each containing 2 integers (<em>i</em>,&nbsp;<em>j</em>) that denote that&nbsp;<em>i</em>&nbsp;and&nbsp;<em>j</em>&nbsp;will work together.</div></div><h3 class="problem_subtitle" style="color: #1a5cc8; margin-top: 14px; margin-right: 0px; margin-bottom: 4px; margin-left: 0px; ">Sample</h3><table class="sample" style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #1a5cc8; border-right-color: #1a5cc8; border-bottom-color: #1a5cc8; border-left-color: #1a5cc8; border-collapse: collapse; "><colgroup><col width="350"><col width="350"></colgroup><tbody><tr><th style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #1a5cc8; border-right-color: #1a5cc8; border-bottom-color: #1a5cc8; border-left-color: #1a5cc8; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; vertical-align: top; color: #1a5cc8; ">input</th><th style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: #1a5cc8; border-right-color: #1a5cc8; border-bottom-color: #1a5cc8; border-left-color: #1a5cc8; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; vertical-align: top; color: #1a5cc8; ">output</th></tr><tr><td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #1a5cc8; border-right-color: #1a5cc8; border-bottom-color: #1a5cc8; border-left-color: #1a5cc8; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; vertical-align: top; "><pre class="intable" style="font-family: monospace, 'monospace for firefox'; font-size: 0.81em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">3
1 2
2 3
1 3
</pre></td><td style="border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #1a5cc8; border-right-color: #1a5cc8; border-bottom-color: #1a5cc8; border-left-color: #1a5cc8; padding-top: 3px; padding-right: 3px; padding-bottom: 3px; padding-left: 3px; vertical-align: top; "><pre class="intable" style="font-family: monospace, 'monospace for firefox'; font-size: 0.81em; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; ">2
1 2
</pre></td></tr></tbody></table><div class="problem_source" style="line-height: 1.4em; margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><strong>Problem Author:&nbsp;</strong>Jivko Ganev</div></div></span><br /><br /><br />模板题.....一般图匹配主要看模板，剩下的就是自己YY建图了.....<br /><br />模板：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">algorithm</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;MAXN&nbsp;256</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000ff; ">struct</span><span style="color: #000000; ">&nbsp;Graph<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">&nbsp;mat[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">][MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">bool</span><span style="color: #000000; ">&nbsp;inque[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;que[MAXN],&nbsp;head,&nbsp;tail;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;match[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;father[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;init(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;_n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;_n;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[i][j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;pop()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;que[head</span><span style="color: #000000; ">++</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;push(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;x)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que[tail</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;x;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inque[x]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;add_edge(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;b)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mat[a][b]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;mat[b][a]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">true</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;inpath[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;pcnt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;find_ancestor(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">pcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inpath[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[match[u]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">true</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(inpath[v]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;pcnt)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[match[v]];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;inblossom[MAXN&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">static</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;bcnt;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;reset(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;anc)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;contract(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;anc&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;find_ancestor(u,&nbsp;v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">bcnt;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(u,&nbsp;anc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;reset(v,&nbsp;anc);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;anc)&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(inblossom[</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;bcnt)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;anc;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">inque[i])&nbsp;push(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;find_augment(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;start)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;inque[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">false</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;head&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;tail&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;push(start);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(head&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;tail)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;pop();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;v&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">v)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(mat[u][v]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">base</span><span style="color: #000000; ">[u]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;match[v]&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(v&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;start&nbsp;</span><span style="color: #000000; ">||</span><span style="color: #000000; ">&nbsp;(match[v]&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;father[match[v]]))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contract(u,&nbsp;v);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(father[v]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(match[v])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;push(match[v]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;father[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;augment(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;finish)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;finish,&nbsp;v,&nbsp;w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(u)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;father[u];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;w&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;match[v];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;match[v]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;w;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;graph_max_match()<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(match[i]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;finish&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;find_augment(i);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(finish)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;augment(finish);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;ans;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}&nbsp;g;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;Graph&nbsp;::&nbsp;bcnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;Graph&nbsp;::&nbsp;pcnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n;<br />&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n);<br />&nbsp;&nbsp;&nbsp;&nbsp;g.init(n);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;EOF)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.add_edge(a,&nbsp;b);<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;g.graph_max_match());<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(g.match[i])<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;i,&nbsp;g.match[i]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g.match[g.match[i]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}<br /></span></div><br /></div><img src ="http://www.cppblog.com/lvlawliet/aggbug/158396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:16 <a href="http://www.cppblog.com/lvlawliet/articles/158396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>JOJ1871:Jogging Trails</title><link>http://www.cppblog.com/lvlawliet/articles/158388.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:13:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158388.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158388.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158388.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158388.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="font-family: Verdana, Arial, Helvetica, sans-serif; line-height: normal; background-color: #ffffff; "><h2 style="font-family: Arial, Helvetica, sans-serif; font-size: 24px; font-style: normal; line-height: normal; font-weight: bold; "><img src="http://192.168.250.250/joj/images/art.gif" width="38" height="38" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " />&nbsp;<a href="http://192.168.250.250/joj/problemstatus.php?pid=1871" style="color: #0055ff; ">1871</a>: Jogging Trails</h2><hr style="height: 1px; " /><table width="90%" border="1" cellspacing="3" cellpadding="3" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; margin-top: 2px; margin-right: auto; margin-bottom: 2px; margin-left: auto; "><colgroup span="7" style="text-align: center; color: red; "></colgroup><tbody><tr style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; "><th width="10%" height="30" style="background-color: #ffee4f; padding-right: 5px; ">Result</th><th width="20%" style="background-color: #ffee4f; padding-right: 5px; ">TIME Limit</th><th width="25%" style="background-color: #ffee4f; padding-right: 5px; ">MEMORY Limit</th><th width="20%" style="background-color: #ffee4f; padding-right: 5px; ">Run Times</th><th width="20%" style="background-color: #ffee4f; padding-right: 5px; ">AC Times</th><th width="20%" style="background-color: #ffee4f; padding-right: 5px; ">JUDGE</th></tr><tr style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; "><td height="30" align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; "><span id="probinfo_placeholder"><img src="http://192.168.250.250/joj/images/ok0.gif" width="20" height="20" alt="" style="border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; " /></span></td><td align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; ">3s</td><td align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; ">8192K</td><td align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; ">59</td><td align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; ">17</td><td align="center" style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 14px; font-style: normal; line-height: normal; color: #000000; ">Standard</td></tr></tbody></table><div class="prob_text">Gord is training for a marathon. Behind his house is a park with a large network of jogging trails connecting water stations. Gord wants to find the shortest jogging route that travels along every trail at least once.<p>Input consists of several test cases. The first line of input for each case contains two positive integers:&nbsp;<em>n &lt;= 15</em>, the number of water stations, and&nbsp;<em>m &lt; 1000</em>, the number of trails. For each trail, there is one subsequent line of input containing three positive integers: the first two, between 1 and&nbsp;<em>n</em>, indicating the water stations at the end points of the trail; the third indicates the length of the trail, in cubits. There may be more than one trail between any two stations; each different trail is given only once in the input; each trail can be travelled in either direction. It is possible to reach any trail from any other trail by visiting a sequence of water stations connected by trails. Gord's route may start at any water station, and must end at the same station. A single line containing 0 follows the last test case.</p><p>For each case, there should be one line of output giving the length of Gord's jogging route.</p><h3 style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal; line-height: normal; font-weight: bold; ">Sample Input</h3><pre style="font-size: 12pt; font-family: 'Courier New', Courier; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: red; border-right-color: red; border-bottom-color: red; border-left-color: red; background-color: #eee8aa; ">4 5
1 2 3
2 3 4
3 4 5
1 4 10
1 3 12
0
</pre><h3 style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 18px; font-style: normal; line-height: normal; font-weight: bold; ">Output for Sample Input</h3><pre style="font-size: 12pt; font-family: 'Courier New', Courier; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: red; border-right-color: red; border-bottom-color: red; border-left-color: red; background-color: #eee8aa; ">41
</pre><div><br /><br /><br /><br /><br />古老的图论问题：中国邮递员问题，曾经在某个图论书上看过，之后就没有之后了......</div></div></span>题目大意很简单：给一无向网络N，从点1出发，每条边至少进过一次后回到点1。<br />思路：（copy别人的）<br /><span style="font-family: arial; line-height: 26px; color: #000000; ">1. 先解释下"度"的概念, 对于无向图中某结点, 它和n条边相连, 就称它的度为n. (有向图还分出度入度, 这里简化了, 不管)<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">2. 参考欧拉回路的概念, 无向图存在欧拉回路, 当前仅当所有点度数均为偶数.&nbsp;<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">证明比较简单, 因为走完一条回路, 对于所有点均进去一次, 出来一次. 故, 对于任意点的度数,都是成对的在"消耗".<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">3. 题中所描述的回路, 有重复经过某边, 这没关系. 现在假设邮递员按题目要求走了一条最短的回路P.<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">那么, 把P所有重复经过的边, 拆开. 即假设三次经过边L, 则我们可以人为的在原图上多加两条边, 对于所有重复经过的边都这样做. 修改后的图记为G2. (原图为G)<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">对于G2, 邮递员走的回路, 即为此图的欧拉回路. 这是重点. (其实很好想, 因为G2中的每条边都仅被邮递员走过一次.)<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">4. 原问题就可以转化为, 如何把G添加一些边, 变成G2<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">而G2所有点度数均为偶数(这是肯定的, 因为G2存在欧拉回路)<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">故转化为, 如何把G中某些边复制x次, 从而消灭G中的奇点(度数为奇数的点).<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">5. 可能有点晕, 举个例子<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">图G只有两个点a和b, 一条边连着ab, 那么ab均为奇点, 要消灭掉, 就把ab之间连线复制一次(因为你不可能随便给它加一条不存在的..)<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">然后变成两条边连着ab. 从G2的角度看, 是欧拉图了, 对应成G, 就是把这条边走了两次而已.<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">6. 奇点总是成对的被消灭, 就算两个奇点不互通, 而是经过很多点才能连通, 那也要连出一条路径来, 以消灭这对奇点.<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">7. 那就好办了.把所有奇点找出来, 然后配对, 如果某种配对方式代价最小, 即为所求.<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">这里还要用上floyd, 求最短路<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">8. 配对算法也要比较好, 裸着配大概会超时, 这个懒得说了.. 如果不会, 直接看代码吧.<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">给点扼要注释, deg记录度数, mp记录最短路. u记录递归时各点是否已配对. (偶点直接被记为已配对. 递归时只路过)<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">dfs返回在当前此种u记录的配对情况下, 把未配对的匹配完, 最小代价是多少<br /><br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">还是提一句吧, 每次配对时, 配对中的第一个可以直接取队列中的第一个没有配对的元素(其实随便取都行). 第二个, 循环一次剩下的即可.<br /></span><span style="font-family: arial; line-height: 26px; color: #000000; ">因为配对是不关心顺序的, 所以第一个可以想怎么取都行. 为了方便, 就第一个了.<br /><br />代码：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cmath</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;N&nbsp;17</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;inf&nbsp;1&nbsp;&lt;&lt;&nbsp;20</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;deg[N],&nbsp;map[N][N],&nbsp;u[N];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;ans,&nbsp;n,&nbsp;m;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;min(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;b)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(a&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;b)&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;b;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;a;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;slove()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;rnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;inf;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">u[i])&nbsp;</span><span style="color: #0000ff; ">break</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;n)&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;u[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">u[j])&nbsp;u[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;rnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(rnt,&nbsp;slove()&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;map[i][j]),&nbsp;u[j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;u[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;rnt;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n)&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;n)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(u,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(u));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(deg,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(deg));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;inf;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;m;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;b,&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ans&nbsp;</span><span style="color: #000000; ">+=</span><span style="color: #000000; ">&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;&nbsp;b</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deg[a]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deg[b]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[a][b]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;map[b][a]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(map[a][b],&nbsp;c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;k&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;k&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">k)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;map[i][j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;min(map[i][j],&nbsp;map[i][k]&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;map[k][j]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(deg[i]&nbsp;</span><span style="color: #000000; ">%</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;u[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;ans&nbsp;</span><span style="color: #000000; ">+</span><span style="color: #000000; ">&nbsp;slove());<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div></span><img src ="http://www.cppblog.com/lvlawliet/aggbug/158388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:13 <a href="http://www.cppblog.com/lvlawliet/articles/158388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ZOJ2697:Electricity</title><link>http://www.cppblog.com/lvlawliet/articles/158387.html</link><dc:creator>LLawliet</dc:creator><author>LLawliet</author><pubDate>Sat, 15 Oct 2011 14:12:00 GMT</pubDate><guid>http://www.cppblog.com/lvlawliet/articles/158387.html</guid><wfw:comment>http://www.cppblog.com/lvlawliet/comments/158387.html</wfw:comment><comments>http://www.cppblog.com/lvlawliet/articles/158387.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/lvlawliet/comments/commentRss/158387.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/lvlawliet/services/trackbacks/158387.html</trackback:ping><description><![CDATA[<span class="Apple-style-span" style="font-family: Arial, Helvetica, Verdana, sans-serif; line-height: normal; background-color: #ffffff; "><center><span class="bigProblemTitle" style="font-size: 24px; color: blue; text-align: center; ">Electricity</span></center><hr /><center><font color="green">Time Limit:&nbsp;</font>10 Seconds &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="green">Memory Limit:&nbsp;</font>32768 KB &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color="blue">Special Judge</font></center><hr /><p>After recent blackouts in some regions in North America, the government has decided to reorganize the power supply network of the continent.</p><p>The power supply network is the set of nodes, such as power plants or transformation stations, connected by transmission lines. All lines are used to transmit electricity from one node to another. For stability reasons the system is organized in such a way that there are no directed cycles.</p><p>Since the government is currently short of money due to several small peaceful militaristic operations, it cannot build new power lines for the moment. So after reorganization the same lines will be used, but some lines will have to transmit electricity in the direction opposite to the current one. To make the reorganization gentle enough, the management of the power network is planning to switch the transmission direction for exactly one line each day. Of course, no day there must be a cycle in a network, since this may cause damage to the system. The resulting network is also designed to be acyclic.</p><p>Help them to plan the reorganization.</p><p><strong>Input</strong></p><p>There are mutilple cases in the input file.</p><p>The first line of the input file contains&nbsp;<em>n</em>&nbsp;--- the number of nodes in the network, and&nbsp;<em>m</em>&nbsp;--- the number of transmission lines (<em>2 &lt;= n &lt;= 1,000</em>&nbsp;,&nbsp;<em>1 &lt;= m &lt;= 10,000</em>&nbsp;). The following&nbsp;<em>m</em>&nbsp;lines contain three integer numbers each. The first two give the source and the destination node for the corresponding line in the current node. The third number is&nbsp;<em>0</em>&nbsp;if the line must keep its transmission direction in the resulting network, and&nbsp;<em>1</em>&nbsp;if the direction must be reversed.</p><p>There can be several lines connecting the same pair of nodes, but due to acyclicity condition, they all transmit electricity in the same direction. This is also the reason why no line connects a node to itself.</p><p>There is an empty line after each case.</p><p><strong>Output</strong></p><p>First output&nbsp;<em>k</em>&nbsp;--- the number of days in the plan you suggest. You don't need to minimize this number, but it must not exceed&nbsp;<em>4m</em>&nbsp;. After that print&nbsp;<em>k</em>&nbsp;integer numbers --- for each day output the number of the line that changes the transmission direction this day. If it is impossible to make the desired reorganization, output&nbsp;<em>-1</em>&nbsp;instead of&nbsp;<em>k</em>&nbsp;.</p><p>There should be an empty line after each case.</p><p><strong>Sample Input</strong></p><blockquote><pre>4 5
1 2 0
2 3 1
2 4 1
1 4 1
4 3 0

2 2
1 2 1
1 2 1

</pre></blockquote><p><strong>Sample Output</strong></p><blockquote><pre>3
3 2 4

-1

</pre></blockquote><hr />Source:&nbsp;<strong>Andrew Stankevich's Contest #9</strong><br /></span><br /><br />一道不错的图论题，大意是给一个有向网络N，必须将其中X条边反向，给出一个方案顺序，使得在执行反向的过程中，网络不会出现环，如果不存在这个方案，输出-1.<br /><br />思路：首先，判断不存在的情况：1.两个重边都要反转，那么在操作过程中肯定出现环；2.在初始网络或结束网络存在环。对于第二种情况，可以用topo排序求一下两个网络是否存在环，并记录下topp序列。<br />之后，我们要构造方案，构造方案的过程有两个：<br />1.一个点的可逆入度边（这句是废话，可逆边就是必须改变的边，肯定包含于方案，但注意是入度）<br />2.这个点必须从结尾网络的topo序列从后往前搜索.....（凌乱了吧....）<br />首先，我们要明白topo序列的性质，就是序列a1,a2,a3,...,an，表示的是网络n个点的线性关系，存在任意的i&lt;j,使得ai -&gt; aj，也就是，如果用网络表示topo序列，那么只有往右边指向的边。<br />通过这一个性质，加上网络N前后两次的topo序列，我们不难发现，结尾网络topo序列的最后一个肯定是在操作中失去出度而从初始的topo序列降为（或停留）最后面，所以，将其可反转的入度边反向，肯定不会存在回射边从而产生环结构，因此，从最后一个点向前搜索，每次执行可执行的反转操作，那么一定能保持当前点的不存在回射边。<br />对于一个点，可存在同时支配多条可反转边，因为答案要求一次一次执行反转，如果对于同一个点顺序不当可能出现环，所以我们考虑以下问题：x-&gt;y, x-&gt;z,如果反转（x,y）从而导致了环的出现，那么可以肯定z-&gt;y是成立的，而在topo关系上z比y靠前，所以我们对于同一个点输出结果时，要按照其初始网络的topo顺序，从左向右输出。<br />思路完毕，AC，证明....略了吧，我证明了一草稿纸。<br />注意不要用矩阵，我因为那个吃了几次CE......<br />代码：<br /><div style="padding-top: 4px; padding-right: 5px; padding-bottom: 4px; padding-left: 4px; background-color: #eeeeee; font-size: 13px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: #cccccc; border-right-color: #cccccc; border-bottom-color: #cccccc; border-left-color: #cccccc; width: 1085px; word-break: break-all; "><span style="color: #000000; ">#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">iostream</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstdio</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">cstring</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">queue</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br />#include&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">vector</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;N&nbsp;1100</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">#define</span><span style="color: #000000; ">&nbsp;M&nbsp;10010</span><span style="color: #000000; "><br /></span><span style="color: #0000ff; ">using</span><span style="color: #000000; ">&nbsp;</span><span style="color: #0000ff; ">namespace</span><span style="color: #000000; ">&nbsp;std;<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;n,&nbsp;m;<br /><br /></span><span style="color: #0000ff; ">struct</span><span style="color: #000000; ">&nbsp;edge<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;v,&nbsp;next;<br />}&nbsp;et[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">][M];<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;eh[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">][N],&nbsp;tot[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;be[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;N],&nbsp;ed[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;N],&nbsp;sta[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">*</span><span style="color: #000000; ">&nbsp;N];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;deg[</span><span style="color: #000000; ">2</span><span style="color: #000000; ">][N],&nbsp;deg2[N];<br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;g[N][N];<br /><br /></span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;add(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;v,&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;t&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">tot[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;et[i][t].u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;et[i][t].v&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;v;<br />&nbsp;&nbsp;&nbsp;&nbsp;et[i][t].next&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;eh[i][u];<br />&nbsp;&nbsp;&nbsp;&nbsp;eh[i][u]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;t;<br />&nbsp;&nbsp;&nbsp;&nbsp;deg[i][v]</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;topo(</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;eh[],&nbsp;edge&nbsp;et[],&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;que[],&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;deg[])<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;k,&nbsp;top&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;qt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deg2[i]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;deg[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(deg2[i]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sta[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">top]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(top&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">)&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;sta[top</span><span style="color: #000000; ">--</span><span style="color: #000000; ">];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;que[qt</span><span style="color: #000000; ">++</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;u;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;eh[u];&nbsp;i&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;et[i].next)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deg2[et[i].v]</span><span style="color: #000000; ">--</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(deg2[et[i].v]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;sta[</span><span style="color: #000000; ">++</span><span style="color: #000000; ">top]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;et[i].v;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;was[M],&nbsp;cnt;<br /></span><span style="color: #0000ff; ">void</span><span style="color: #000000; ">&nbsp;slove()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;k;<br />&nbsp;&nbsp;&nbsp;&nbsp;memset(was,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(was));<br />&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;cnt);<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;n&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&gt;=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;</span><span style="color: #000000; ">--</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;u&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;ed[i];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(g[u][be[j]]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(was[g[u][be[j]]]&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;was[g[u][be[j]]]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d&nbsp;</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;g[u][be[j]]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(cnt&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />}<br /><br /></span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;i,&nbsp;j,&nbsp;k;<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">while</span><span style="color: #000000; ">&nbsp;(scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">n,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">m)&nbsp;</span><span style="color: #000000; ">!=</span><span style="color: #000000; ">&nbsp;EOF)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(eh,&nbsp;</span><span style="color: #000000; ">-</span><span style="color: #000000; ">1</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(eh));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;memset(deg,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #0000ff; ">sizeof</span><span style="color: #000000; ">(deg));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(j&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;j&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;n;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">j)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[i][j]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tot[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;tot[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;flag&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">for</span><span style="color: #000000; ">&nbsp;(i&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">;&nbsp;i&nbsp;</span><span style="color: #000000; ">&lt;=</span><span style="color: #000000; ">&nbsp;m;&nbsp;</span><span style="color: #000000; ">++</span><span style="color: #000000; ">i)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;a,&nbsp;b,&nbsp;c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">%d%d%d</span><span style="color: #000000; ">"</span><span style="color: #000000; ">,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">a,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">b,&nbsp;</span><span style="color: #000000; ">&amp;</span><span style="color: #000000; ">c);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(a,&nbsp;b,&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(c)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(b,&nbsp;a,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt</span><span style="color: #000000; ">++</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(g[a][b]&nbsp;</span><span style="color: #000000; ">&gt;</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)&nbsp;flag&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;g[a][b]&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">else</span><span style="color: #000000; "><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;add(a,&nbsp;b,&nbsp;</span><span style="color: #000000; ">1</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(flag&nbsp;</span><span style="color: #000000; ">==</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-1\n\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;first&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;topo(eh[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">],&nbsp;et[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">],&nbsp;be,&nbsp;deg[</span><span style="color: #000000; ">0</span><span style="color: #000000; ">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">int</span><span style="color: #000000; ">&nbsp;last&nbsp;</span><span style="color: #000000; ">=</span><span style="color: #000000; ">&nbsp;topo(eh[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;et[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">],&nbsp;ed,&nbsp;deg[</span><span style="color: #000000; ">1</span><span style="color: #000000; ">]);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">if</span><span style="color: #000000; ">&nbsp;(</span><span style="color: #000000; ">!</span><span style="color: #000000; ">(first&nbsp;</span><span style="color: #000000; ">&amp;&amp;</span><span style="color: #000000; ">&nbsp;last))<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">-1\n\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">continue</span><span style="color: #000000; ">;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slove();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="color: #000000; ">"</span><span style="color: #000000; ">\n</span><span style="color: #000000; ">"</span><span style="color: #000000; ">);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff; ">return</span><span style="color: #000000; ">&nbsp;</span><span style="color: #000000; ">0</span><span style="color: #000000; ">;<br />}</span></div><img src ="http://www.cppblog.com/lvlawliet/aggbug/158387.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/lvlawliet/" target="_blank">LLawliet</a> 2011-10-15 22:12 <a href="http://www.cppblog.com/lvlawliet/articles/158387.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>