<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>OneNot&#039;s Blog</title>
	<atom:link href="http://heike567.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://heike567.wordpress.com</link>
	<description>My-new-ACM/ICPC-Blog</description>
	<lastBuildDate>Wed, 07 Apr 2010 07:52:11 +0000</lastBuildDate>
	<language>zh-cn</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='heike567.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://0.gravatar.com/blavatar/840d1bc339d41606d5d6ae0357cef8b5?s=96&#038;d=http%3A%2F%2Fs2.wp.com%2Fi%2Fbuttonw-com.png</url>
		<title>OneNot&#039;s Blog</title>
		<link>http://heike567.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://heike567.wordpress.com/osd.xml" title="OneNot&#039;s Blog" />
	<atom:link rel='hub' href='http://heike567.wordpress.com/?pushpress=hub'/>
		<item>
		<title>【求桥和双连通分量】pku3352&amp;&amp;pku3177</title>
		<link>http://heike567.wordpress.com/2010/04/06/%e3%80%90%e6%b1%82%e6%a1%a5%e5%92%8c%e5%8f%8c%e8%bf%9e%e9%80%9a%e5%88%86%e9%87%8f%e3%80%91pku3352pku3177/</link>
		<comments>http://heike567.wordpress.com/2010/04/06/%e3%80%90%e6%b1%82%e6%a1%a5%e5%92%8c%e5%8f%8c%e8%bf%9e%e9%80%9a%e5%88%86%e9%87%8f%e3%80%91pku3352pku3177/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 06:49:50 +0000</pubDate>
		<dc:creator>heike567</dc:creator>
				<category><![CDATA[ACM/图论]]></category>

		<guid isPermaLink="false">http://heike567.wordpress.com/?p=32</guid>
		<description><![CDATA[概念连接http://www.byvoid.com/blog/biconnect/ /* * File: main.cpp * Author: manny * * Created on 2010年4月5日, 上午1:12 */ #include &#60;stdlib.h&#62; #include &#60;queue&#62; #include &#60;stdio.h&#62; #include &#60;string.h&#62; #include &#60;algorithm&#62; #include &#60;iostream&#62; using namespace std; #define min(a,b)a&#60;b?a:b #define maxn 1005 vector&#60;int&#62;map[maxn]; int dfn[maxn],low[maxn],stak[maxn],ID[maxn],degree[maxn]; int id,n,m; int ind,stop; /* * */ void dfs(int u,int fa) { dfn[u]=low[u]=++ind; stak[++stop]=u; for(int i=0;i&#60;map[u].size();i++) { <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=32&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>概念连接<a href="http://www.byvoid.com/blog/biconnect/">http://www.byvoid.com/blog/biconnect/</a><br class="Apple-interchange-newline" /></p>
<pre class="sh_cpp sh_sourceCode"><span class="sh_comment" style="font-style:italic;color:#a52a2a;">/*</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> * File:   main.cpp</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> * Author: manny</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> *</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> * Created on 2010年4月5日, 上午1:12</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> */</span>

<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;stdlib.h&gt;</span></span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;queue&gt;</span></span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;stdio.h&gt;</span></span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;string.h&gt;</span></span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;algorithm&gt;</span></span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#include</span> <span class="sh_string" style="color:red;"><span style="font-family:新宋体;">&lt;iostream&gt;</span></span>
<span class="sh_keyword" style="color:blue;font-weight:bold;">using</span> <span class="sh_keyword" style="color:blue;font-weight:bold;">namespace</span> std<span class="sh_symbol" style="color:#8b0000;">;</span>
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#define</span> <span class="sh_function" style="color:black;font-weight:bold;">min</span><span class="sh_symbol" style="color:#8b0000;">(</span>a<span class="sh_symbol" style="color:#8b0000;">,</span>b<span class="sh_symbol" style="color:#8b0000;">)</span>a<span class="sh_symbol" style="color:#8b0000;">&lt;</span>b<span class="sh_symbol" style="color:#8b0000;">?</span>a<span class="sh_symbol" style="color:#8b0000;">:</span>b
<span class="sh_preproc" style="color:#00008b;font-weight:bold;">#define</span> maxn <span class="sh_number" style="color:purple;">1005</span>
vector<span class="sh_symbol" style="color:#8b0000;">&lt;</span><span class="sh_type" style="color:#006400;">int</span><span class="sh_symbol" style="color:#8b0000;">&gt;</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">];</span>
<span class="sh_type" style="color:#006400;">int</span> dfn<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">],</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">],</span>stak<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">],</span>ID<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">],</span>degree<span class="sh_symbol" style="color:#8b0000;">[</span>maxn<span class="sh_symbol" style="color:#8b0000;">];</span>
<span class="sh_type" style="color:#006400;">int</span> id<span class="sh_symbol" style="color:#8b0000;">,</span>n<span class="sh_symbol" style="color:#8b0000;">,</span>m<span class="sh_symbol" style="color:#8b0000;">;</span>
<span class="sh_type" style="color:#006400;">int</span> ind<span class="sh_symbol" style="color:#8b0000;">,</span>stop<span class="sh_symbol" style="color:#8b0000;">;</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;">/*</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> *</span>
<span class="sh_comment" style="font-style:italic;color:#a52a2a;"> */</span>
<span class="sh_type" style="color:#006400;">void</span> <span class="sh_function" style="color:black;font-weight:bold;">dfs</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> u<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_type" style="color:#006400;">int</span> fa<span class="sh_symbol" style="color:#8b0000;">)</span>
<span class="sh_cbracket" style="color:red;">{</span>
    dfn<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]=</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]=++</span>ind<span class="sh_symbol" style="color:#8b0000;">;</span>
    stak<span class="sh_symbol" style="color:#8b0000;">[++</span>stop<span class="sh_symbol" style="color:#8b0000;">]=</span>u<span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> i<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">&lt;</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">size</span><span class="sh_symbol" style="color:#8b0000;">();</span>i<span class="sh_symbol" style="color:#8b0000;">++)</span>
    <span class="sh_cbracket" style="color:red;">{</span>
        <span class="sh_type" style="color:#006400;">int</span> v<span class="sh_symbol" style="color:#8b0000;">=</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">][</span>i<span class="sh_symbol" style="color:#8b0000;">];</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(!</span>dfn<span class="sh_symbol" style="color:#8b0000;">[</span>v<span class="sh_symbol" style="color:#8b0000;">])</span>
        <span class="sh_cbracket" style="color:red;">{</span>
            <span class="sh_function" style="color:black;font-weight:bold;">dfs</span><span class="sh_symbol" style="color:#8b0000;">(</span>v<span class="sh_symbol" style="color:#8b0000;">,</span>u<span class="sh_symbol" style="color:#8b0000;">);</span>
            low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]=</span><span class="sh_function" style="color:black;font-weight:bold;">min</span><span class="sh_symbol" style="color:#8b0000;">(</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">],</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>v<span class="sh_symbol" style="color:#8b0000;">]);</span>
        <span class="sh_cbracket" style="color:red;">}</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">else</span> <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span>v<span class="sh_symbol" style="color:#8b0000;">!=</span>fa<span class="sh_symbol" style="color:#8b0000;">)</span>
            low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]=</span><span class="sh_function" style="color:black;font-weight:bold;">min</span><span class="sh_symbol" style="color:#8b0000;">(</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">],</span>dfn<span class="sh_symbol" style="color:#8b0000;">[</span>v<span class="sh_symbol" style="color:#8b0000;">]);</span>
    <span class="sh_cbracket" style="color:red;">}</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span>low<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]&gt;</span>dfn<span class="sh_symbol" style="color:#8b0000;">[</span>fa<span class="sh_symbol" style="color:#8b0000;">])</span>
    <span class="sh_cbracket" style="color:red;">{</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">while</span><span class="sh_symbol" style="color:#8b0000;">(</span>stak<span class="sh_symbol" style="color:#8b0000;">[</span>stop<span class="sh_symbol" style="color:#8b0000;">]!=</span>u<span class="sh_symbol" style="color:#8b0000;">)</span>ID<span class="sh_symbol" style="color:#8b0000;">[</span>stak<span class="sh_symbol" style="color:#8b0000;">[</span>stop<span class="sh_symbol" style="color:#8b0000;">--]]=</span>id<span class="sh_symbol" style="color:#8b0000;">;</span>
        ID<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">]=</span>id<span class="sh_symbol" style="color:#8b0000;">;</span>stop<span class="sh_symbol" style="color:#8b0000;">--;</span>id<span class="sh_symbol" style="color:#8b0000;">++;</span>
    <span class="sh_cbracket" style="color:red;">}</span>
<span class="sh_cbracket" style="color:red;">}</span>
<span class="sh_type" style="color:#006400;">void</span> <span class="sh_function" style="color:black;font-weight:bold;">solve</span><span class="sh_symbol" style="color:#8b0000;">()</span>
<span class="sh_cbracket" style="color:red;">{</span>
    <span class="sh_function" style="color:black;font-weight:bold;">memset</span><span class="sh_symbol" style="color:#8b0000;">(</span>ID<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_keyword" style="color:blue;font-weight:bold;">sizeof</span><span class="sh_symbol" style="color:#8b0000;">(</span>ID<span class="sh_symbol" style="color:#8b0000;">));</span>
    <span class="sh_function" style="color:black;font-weight:bold;">memset</span><span class="sh_symbol" style="color:#8b0000;">(</span>dfn<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_keyword" style="color:blue;font-weight:bold;">sizeof</span><span class="sh_symbol" style="color:#8b0000;">(</span>dfn<span class="sh_symbol" style="color:#8b0000;">));</span>
    <span class="sh_function" style="color:black;font-weight:bold;">memset</span><span class="sh_symbol" style="color:#8b0000;">(</span>low<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_keyword" style="color:blue;font-weight:bold;">sizeof</span><span class="sh_symbol" style="color:#8b0000;">(</span>low<span class="sh_symbol" style="color:#8b0000;">));</span>
    <span class="sh_function" style="color:black;font-weight:bold;">memset</span><span class="sh_symbol" style="color:#8b0000;">(</span>degree<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_keyword" style="color:blue;font-weight:bold;">sizeof</span><span class="sh_symbol" style="color:#8b0000;">(</span>degree<span class="sh_symbol" style="color:#8b0000;">));</span>
    ind<span class="sh_symbol" style="color:#8b0000;">=</span>stop<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>
    id<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">1</span><span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_function" style="color:black;font-weight:bold;">dfs</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_number" style="color:purple;">1</span><span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">);</span>
    <span class="sh_comment" style="font-style:italic;color:#a52a2a;">//for(int  i=1;i&lt;=n;i++)printf("ID[%d]=%d\n",i,ID[i]);</span>
    <span class="sh_type" style="color:#006400;">int</span> leaf<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> i<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">1</span><span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">&lt;=</span>n<span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">++)</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> j<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>j<span class="sh_symbol" style="color:#8b0000;">&lt;</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">size</span><span class="sh_symbol" style="color:#8b0000;">();</span>j<span class="sh_symbol" style="color:#8b0000;">++)</span>
            <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span>ID<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">]!=</span>ID<span class="sh_symbol" style="color:#8b0000;">[</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">][</span>j<span class="sh_symbol" style="color:#8b0000;">]])</span>
                degree<span class="sh_symbol" style="color:#8b0000;">[</span>ID<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">]]++;</span>
        <span class="sh_comment" style="font-style:italic;color:#a52a2a;">//for(int  i=1;i&lt;=n;i++)printf("degree[%d]=%d\n",i,degree[i]);</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> i<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">1</span><span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">&lt;=</span>n<span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">++)</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span>degree<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">]==</span><span class="sh_number" style="color:purple;">1</span><span class="sh_symbol" style="color:#8b0000;">)</span>
            leaf<span class="sh_symbol" style="color:#8b0000;">++;</span>
        <span class="sh_function" style="color:black;font-weight:bold;">printf</span><span class="sh_symbol" style="color:#8b0000;">(</span><span style="font-family:新宋体;"><span class="sh_string" style="color:red;">"%d</span><span class="sh_specialchar" style="color:#ffc0cb;">\n</span><span class="sh_string" style="color:red;">"</span></span><span class="sh_symbol" style="color:#8b0000;">,(</span>leaf<span class="sh_number" style="color:purple;">+1</span><span class="sh_symbol" style="color:#8b0000;">)/</span><span class="sh_number" style="color:purple;">2</span><span class="sh_symbol" style="color:#8b0000;">);</span>
<span class="sh_cbracket" style="color:red;">}</span>
<span class="sh_type" style="color:#006400;">bool</span> <span class="sh_function" style="color:black;font-weight:bold;">isok</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> u<span class="sh_symbol" style="color:#8b0000;">,</span><span class="sh_type" style="color:#006400;">int</span> v<span class="sh_symbol" style="color:#8b0000;">)</span>
<span class="sh_cbracket" style="color:red;">{</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> i<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">&lt;</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">size</span><span class="sh_symbol" style="color:#8b0000;">();</span>i<span class="sh_symbol" style="color:#8b0000;">++)</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span>v<span class="sh_symbol" style="color:#8b0000;">==</span>map<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">][</span>i<span class="sh_symbol" style="color:#8b0000;">])</span><span class="sh_keyword" style="color:blue;font-weight:bold;">return</span> <span class="sh_keyword" style="color:blue;font-weight:bold;">false</span><span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">return</span> <span class="sh_keyword" style="color:blue;font-weight:bold;">true</span><span class="sh_symbol" style="color:#8b0000;">;</span>
<span class="sh_cbracket" style="color:red;">}</span>
<span class="sh_type" style="color:#006400;">int</span> <span class="sh_function" style="color:black;font-weight:bold;">main</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> argc<span class="sh_symbol" style="color:#8b0000;">,</span> <span class="sh_type" style="color:#006400;">char</span><span class="sh_symbol" style="color:#8b0000;">**</span> argv<span class="sh_symbol" style="color:#8b0000;">)</span> <span class="sh_cbracket" style="color:red;">{</span>
    <span class="sh_type" style="color:#006400;">int</span> u<span class="sh_symbol" style="color:#8b0000;">,</span>v<span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_type" style="color:#006400;">int</span> t<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>
    <span class="sh_type" style="color:#006400;">char</span> ch<span class="sh_symbol" style="color:#8b0000;">[</span><span class="sh_number" style="color:purple;">50</span><span class="sh_symbol" style="color:#8b0000;">];</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">while</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_function" style="color:black;font-weight:bold;">scanf</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_string" style="color:red;"><span style="font-family:新宋体;">"%d%d"</span></span><span class="sh_symbol" style="color:#8b0000;">,&amp;</span>n<span class="sh_symbol" style="color:#8b0000;">,&amp;</span>m<span class="sh_symbol" style="color:#8b0000;">)!=</span>EOF<span class="sh_symbol" style="color:#8b0000;">)</span>
    <span class="sh_cbracket" style="color:red;">{</span>
        t<span class="sh_symbol" style="color:#8b0000;">++;</span>

        <span class="sh_keyword" style="color:blue;font-weight:bold;">for</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_type" style="color:#006400;">int</span> i<span class="sh_symbol" style="color:#8b0000;">=</span><span class="sh_number" style="color:purple;">0</span><span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">&lt;=</span>n<span class="sh_symbol" style="color:#8b0000;">;</span>i<span class="sh_symbol" style="color:#8b0000;">++)</span>
        map<span class="sh_symbol" style="color:#8b0000;">[</span>i<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">clear</span><span class="sh_symbol" style="color:#8b0000;">();</span>
        <span class="sh_keyword" style="color:blue;font-weight:bold;">while</span><span class="sh_symbol" style="color:#8b0000;">(</span>m<span class="sh_symbol" style="color:#8b0000;">--)</span>
        <span class="sh_cbracket" style="color:red;">{</span>
            <span class="sh_function" style="color:black;font-weight:bold;">scanf</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_string" style="color:red;"><span style="font-family:新宋体;">"%d%d"</span></span><span class="sh_symbol" style="color:#8b0000;">,&amp;</span>u<span class="sh_symbol" style="color:#8b0000;">,&amp;</span>v<span class="sh_symbol" style="color:#8b0000;">);</span>
            <span class="sh_keyword" style="color:blue;font-weight:bold;">if</span><span class="sh_symbol" style="color:#8b0000;">(</span><span class="sh_function" style="color:black;font-weight:bold;">isok</span><span class="sh_symbol" style="color:#8b0000;">(</span>u<span class="sh_symbol" style="color:#8b0000;">,</span>v<span class="sh_symbol" style="color:#8b0000;">))</span>
            <span class="sh_cbracket" style="color:red;">{</span>
                map<span class="sh_symbol" style="color:#8b0000;">[</span>u<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">push_back</span><span class="sh_symbol" style="color:#8b0000;">(</span>v<span class="sh_symbol" style="color:#8b0000;">);</span>
                map<span class="sh_symbol" style="color:#8b0000;">[</span>v<span class="sh_symbol" style="color:#8b0000;">].</span><span class="sh_function" style="color:black;font-weight:bold;">push_back</span><span class="sh_symbol" style="color:#8b0000;">(</span>u<span class="sh_symbol" style="color:#8b0000;">);</span>
            <span class="sh_cbracket" style="color:red;">}</span>
        <span class="sh_cbracket" style="color:red;">}</span>
        <span class="sh_comment" style="font-style:italic;color:#a52a2a;">//printf("Output for Sample Input %d\n",t);</span>
        <span class="sh_function" style="color:black;font-weight:bold;">solve</span><span class="sh_symbol" style="color:#8b0000;">();</span>
        <span class="sh_function" style="color:black;font-weight:bold;">printf</span><span class="sh_symbol" style="color:#8b0000;">(</span><span style="font-family:新宋体;"><span class="sh_string" style="color:red;">"</span><span class="sh_specialchar" style="color:#ffc0cb;">\n</span><span class="sh_string" style="color:red;">"</span></span><span class="sh_symbol" style="color:#8b0000;">);</span>
    <span class="sh_cbracket" style="color:red;">}</span>
    <span class="sh_keyword" style="color:blue;font-weight:bold;">return</span> <span class="sh_symbol" style="color:#8b0000;">(</span>EXIT_SUCCESS<span class="sh_symbol" style="color:#8b0000;">);</span>
<span class="sh_cbracket" style="color:red;">}</span></pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heike567.wordpress.com/32/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heike567.wordpress.com/32/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heike567.wordpress.com/32/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=32&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heike567.wordpress.com/2010/04/06/%e3%80%90%e6%b1%82%e6%a1%a5%e5%92%8c%e5%8f%8c%e8%bf%9e%e9%80%9a%e5%88%86%e9%87%8f%e3%80%91pku3352pku3177/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c3cafec983dc6eaa9ffbdfbac170914?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">heike567</media:title>
		</media:content>
	</item>
		<item>
		<title>【Gauss消元】pku1222 Light  out Game</title>
		<link>http://heike567.wordpress.com/2010/04/05/%e3%80%90gauss%e6%b6%88%e5%85%83%e3%80%91pku1222-light-out-game/</link>
		<comments>http://heike567.wordpress.com/2010/04/05/%e3%80%90gauss%e6%b6%88%e5%85%83%e3%80%91pku1222-light-out-game/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:36:19 +0000</pubDate>
		<dc:creator>heike567</dc:creator>
				<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[ACM/数学]]></category>

		<guid isPermaLink="false">http://heike567.wordpress.com/?p=16</guid>
		<description><![CDATA[http://hi.baidu.com/xiaohanhoho/blog/item/2c81f6cba6ca244ff21fe71a.html 做到这题是我开始一点感觉都没有，看到了上面那个人的博客，我才有点感觉。白天上课时候彻底把他完全转化为gauss 的数学模型。十分感谢xiaohan_hoho。 这个游戏有一些技巧： 1、按按钮的顺序可以随便。 2、任何一个按钮都最多需要按下1次。因为按下第二次刚好抵消第一次，等于没有按。 我们记L为待求解的原始布局矩阵。A(i,j)表示按下第i行第j列的按钮时的作用范围矩阵。在上述例子中， L= 0 1 0 1 1 0 0 1 1 A(1,1)= 1 1 0 1 0 0 0 0 0 假设x(i,j)表示：想要使得L回到全灭状态，第i行第j列的按钮是否需要按下。0表示不按，1表示按下。那么，这个游戏就转化为如下方程的求解： L + x(1,1)*A(1,1) + x(1,2)*A(1,2) + x(1,3)*A(1,3) + x(2,1)*A(2,1) + &#8230; + x(3,3)*A(3,3) = 0 &#160;&#160;&#160;1 其中x(i,j)是未知数。方程右边的0表示零矩阵，表示全灭的状态。直观的理解就是：原来的L状态，经过了若干个A(i,j)的变换，最终变成0:全灭状态。 由于是0、1矩阵，上述方程也可以写成： 将1式两边同时加上一个L矩阵就可以变成 x(1,1)*A(1,1) + x(1,2)*A(1,2) + x(1,3)*A(1,3) + x(2,1)*A(2,1) + <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=16&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p style="text-align:center;margin:0;" class="MsoNormal" align="center">
<p style="text-align:center;margin:0;" class="MsoNormal" align="center"><strong><span style="font-size:16pt;"><font face="Times New Roman"></font></span></strong></p>
<p><span><a href="http://hi.baidu.com/xiaohanhoho/blog/item/2c81f6cba6ca244ff21fe71a.html"><font color="#800080" face="Times New Roman">http://hi.baidu.com/xiaohanhoho/blog/item/2c81f6cba6ca244ff21fe71a.html</font></a></span></p>
<p style="margin:0;" class="MsoNormal"><span>做到这题是我开始一点感觉都没有，看到了上面那个人的博客，我才有点感觉。白天上课时候彻底把他完全转化为</span><span><font face="Times New Roman">gauss </font></span><span>的数学模型。十分感谢<strong>xiaohan_hoho。</strong></span><span><font face="Times New Roman"></p>
<p></font></span><span>这个游戏有一些技巧：</span><span><font face="Times New Roman"> <br />
1</font></span><span>、按按钮的顺序可以随便。</span><span><font face="Times New Roman"> <br />
2</font></span><span>、任何一个按钮都最多需要按下</span><span><font face="Times New Roman">1</font></span><span>次。因为按下第二次刚好抵消第一次，等于没有按。</span><span><font face="Times New Roman"> </font></span><span><font face="Times New Roman"><br />
</font></span><span>我们记</span><span><font face="Times New Roman">L</font></span><span>为待求解的原始布局矩阵。</span><span><font face="Times New Roman">A(i,j)</font></span><span>表示按下第</span><span><font face="Times New Roman">i</font></span><span>行第</span><span><font face="Times New Roman">j</font></span><span>列的按钮时的作用范围矩阵。在上述例子中，</span><span><font face="Times New Roman"> <br />
L= <br />
0 1 0 <br />
1 1 0 <br />
0 1 1 </p>
<p>A(1,1)= <br />
1 1 0 <br />
1 0 0 <br />
0 0 0 </p>
<p></font></span><span>假设</span><span><font face="Times New Roman">x(i,j)</font></span><span>表示：想要使得</span><span><font face="Times New Roman">L</font></span><span>回到全灭状态，第</span><span><font face="Times New Roman">i</font></span><span>行第</span><span><font face="Times New Roman">j</font></span><span>列的按钮是否需要按下。</span><span><font face="Times New Roman">0</font></span><span>表示不按，</span><span><font face="Times New Roman">1</font></span><span>表示按下。那么，这个游戏就转化为如下方程的求解：</span><span><font face="Times New Roman"> <br />
L + x(1,1)*A(1,1) + x(1,2)*A(1,2) + x(1,3)*A(1,3) + x(2,1)*A(2,1) + &#8230; + x(3,3)*A(3,3) = 0 <span>&nbsp;&nbsp;&nbsp;</span><strong>1</strong></p>
<p></font></span><span>其中</span><span><font face="Times New Roman">x(i,j)</font></span><span>是未知数。方程右边的</span><span><font face="Times New Roman">0</font></span><span>表示零矩阵，表示全灭的状态。直观的理解就是：原来的</span><span><font face="Times New Roman">L</font></span><span>状态，经过了若干个</span><span><font face="Times New Roman">A(i,j)</font></span><span>的变换，最终变成</span><span><font face="Times New Roman">0:</font></span><span>全灭状态。</span><span><font face="Times New Roman"> <br />
</font></span><span>由于是</span><span><font face="Times New Roman">0</font></span><span>、</span><span><font face="Times New Roman">1</font></span><span>矩阵，上述方程也可以写成：</span><font face="Times New Roman"> </font></p>
<p style="margin:0;" class="MsoNormal"><strong><span>将</span><span><font face="Times New Roman">1</font></span></strong><strong><span>式两边同时加上一个</span><span><font face="Times New Roman">L</font></span></strong><strong><span>矩阵就可以变成</span><span><br />
<font face="Times New Roman">x(1,1)*A(1,1) + x(1,2)*A(1,2) + x(1,3)*A(1,3) + x(2,1)*A(2,1) + &#8230; + x(3,3)*A(3,3) = L</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">A</font></span></strong><strong><span>（</span><span><font face="Times New Roman">1</font></span></strong><strong><span>，</span><span><font face="Times New Roman">1</font></span></strong><strong><span>）把矩阵</span><font face="Times New Roman"> </font></strong><strong><span>转化为一个列向量，</span><span><font face="Times New Roman">L</font></span></strong><strong><span>也转化为一个列向量，</span><span></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span>将</span><span><font face="Times New Roman">sigma xi*Ai=Li </font></span></strong><strong><span>对应位置的值相等就可以建立方程组了</span><span></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">X1*A(1,1)1+X2*A(1,2)1+X3*A(1,3)1+</font></span></strong><strong><span>…………</span><span><font face="Times New Roman">X30*A(30,30)1=L1;<span>&nbsp;&nbsp;&nbsp;  </span>mod 2</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">X1*A(1,1)2+X2*A(1,2)2+X3*A(1,3)2+</font></span></strong><strong><span>…………</span><span><font face="Times New Roman">X30*A(30,30)2=L2;<span>&nbsp;&nbsp;&nbsp;  </span>mod 2</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">X1*A(1,1)3+X2*A(1,2)3+X3*A(1,3)3+</font></span></strong><strong><span>…………</span><span><font face="Times New Roman">X30*A(30,30)3=L3<span>&nbsp;&nbsp;&nbsp;  </span><span> </span>mod 2</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">…….</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">…….</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">…….</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span><font face="Times New Roman">X1*A(1,1)30+X2*A(1,2)30+X3*A(1,3)30+</font></span></strong><strong><span>…………</span><span><font face="Times New Roman">X30*A(30,30)30=L30;<span>  </span>mod 2</font></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span>其中</span><span><font face="Times New Roman">A(i,j)k </font></span></strong><strong><span>表示列向量</span><span><font face="Times New Roman">A</font></span></strong><strong><span>中第</span><span><font face="Times New Roman">K</font></span></strong><strong><span>个元素</span><span></span></strong></p>
<p style="margin:0;" class="MsoNormal"><strong><span>这里的</span><span><font face="Times New Roman">*</font></span></strong><strong><span>表示点乘，</span><span><font face="Times New Roman">Xi</font></span></strong><strong><span>取</span><span><font face="Times New Roman">(1,0) <span> </span>+</font></span></strong><strong><span>表示模</span><span><font face="Times New Roman">2</font></span></strong><strong><span>加法，所以在高斯消元的时候可以用</span><span><font face="Times New Roman">^</font></span></strong><strong><span>异或运算</span></strong></p>
<p><font size="3"><span class="shtype"><span><span style="widows:2;text-transform:none;text-indent:0;border-collapse:separate;font:medium Simsun;white-space:normal;orphans:2;letter-spacing:normal;color:rgb(0,0,0);word-spacing:0;" class="Apple-style-span"></p>
<pre class="sh_cpp sh_sourceCode"><span style="color:rgb(0,100,0);" class="sh_type">bool</span> gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span><span style="color:purple;" class="sh_number">32</span><span style="color:rgb(139,0,0);" class="sh_symbol">][</span><span style="color:purple;" class="sh_number">32</span><span style="color:rgb(139,0,0);" class="sh_symbol">];</span>
<span style="color:rgb(0,100,0);" class="sh_type">bool</span> ans<span style="color:rgb(139,0,0);" class="sh_symbol">[</span><span style="color:purple;" class="sh_number">32</span><span style="color:rgb(139,0,0);" class="sh_symbol">];</span>
<span style="color:rgb(0,100,0);" class="sh_type">int</span> <span style="color:black;font-weight:bold;" class="sh_function">Gauss</span><span style="color:rgb(139,0,0);" class="sh_symbol">()</span>
<span style="color:red;" class="sh_cbracket">{</span>
 <span style="color:rgb(0,100,0);" class="sh_type">int</span> i<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
 <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
 <span style="color:red;" class="sh_cbracket">{</span>
  i<span style="color:rgb(139,0,0);" class="sh_symbol">=</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">while</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">&amp;&amp;</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">]==</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">)</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">++;</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">&gt;</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">)</span>
   <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;=</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span><span style="color:black;font-weight:bold;" class="sh_function">swap</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">],</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>r<span style="color:rgb(139,0,0);" class="sh_symbol">]);</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
  <span style="color:red;" class="sh_cbracket">{</span>
   <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">!=</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">&amp;&amp;</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">])</span><span style="color:red;" class="sh_cbracket">{</span>
    <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;=</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
     gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">]^=</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">];</span>
   <span style="color:red;" class="sh_cbracket">}</span>
  <span style="color:red;" class="sh_cbracket">}</span>
 <span style="color:red;" class="sh_cbracket">}</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//  for(i=0;i&lt;30;i++)</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//  {</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//   for(j=0;j&lt;30;j++)</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//    printf(&quot;%d &quot;,gass[i][j]);</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//   printf(&quot;\n&quot;);</span>
<span style="font-style:italic;color:rgb(165,42,42);" class="sh_comment">//  }</span>
 <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
        <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">])</span>
        <span style="color:red;" class="sh_cbracket">{</span>
            <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">&amp;&amp;!</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">];</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
                <span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
   <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">==</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">)</span><span style="color:blue;font-weight:bold;" class="sh_keyword">return</span> <span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
   <span style="color:blue;font-weight:bold;" class="sh_keyword">else</span>
    ans<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">]=</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">]=</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">];</span>
        <span style="color:red;" class="sh_cbracket">}</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">return</span> <span style="color:purple;" class="sh_number">1</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
<span style="color:red;" class="sh_cbracket">}</span>
<span style="color:rgb(0,100,0);" class="sh_type">int</span> <span style="color:black;font-weight:bold;" class="sh_function">main</span><span style="color:rgb(139,0,0);" class="sh_symbol">()</span>
<span style="color:red;" class="sh_cbracket">{</span>
 <span style="color:rgb(0,100,0);" class="sh_type">int</span> i<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>t<span style="color:rgb(139,0,0);" class="sh_symbol">,</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
 <span style="color:black;font-weight:bold;" class="sh_function">scanf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><span style="color:red;" class="sh_string"><font face="新宋体">&quot;%d&quot;</font></span><span style="color:rgb(139,0,0);" class="sh_symbol">,&amp;</span>t<span style="color:rgb(139,0,0);" class="sh_symbol">);</span>
 <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">1</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;=</span>t<span style="color:rgb(139,0,0);" class="sh_symbol">;</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
 <span style="color:red;" class="sh_cbracket">{</span>
  <span style="color:black;font-weight:bold;" class="sh_function">printf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><font face="新宋体"><span style="color:red;" class="sh_string">&quot;PUZZLE #%d</span><span style="color:rgb(255,192,203);" class="sh_specialchar">\n</span><span style="color:red;" class="sh_string">&quot;</span></font><span style="color:rgb(139,0,0);" class="sh_symbol">,</span>k<span style="color:rgb(139,0,0);" class="sh_symbol">);</span>
  <span style="color:black;font-weight:bold;" class="sh_function">memset</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">,</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">,</span><span style="color:blue;font-weight:bold;" class="sh_keyword">sizeof</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">));</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
   <span style="color:black;font-weight:bold;" class="sh_function">scanf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><span style="color:red;" class="sh_string"><font face="新宋体">&quot;%d&quot;</font></span><span style="color:rgb(139,0,0);" class="sh_symbol">,&amp;</span>gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">][</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">]),</span>ans<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">]=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
  <span style="color:red;" class="sh_cbracket">{</span>
   <span style="color:rgb(0,100,0);" class="sh_type">int</span> kn<span style="color:rgb(139,0,0);" class="sh_symbol">=</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">/</span><span style="color:purple;" class="sh_number">6</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
   <span style="color:rgb(0,100,0);" class="sh_type">int</span> km<span style="color:rgb(139,0,0);" class="sh_symbol">=</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">%</span><span style="color:purple;" class="sh_number">6</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
   <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span><span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span>
   <span style="color:red;" class="sh_cbracket">{</span>
    <span style="color:rgb(0,100,0);" class="sh_type">int</span> kx<span style="color:rgb(139,0,0);" class="sh_symbol">=</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">/</span><span style="color:purple;" class="sh_number">6</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
    <span style="color:rgb(0,100,0);" class="sh_type">int</span> ky<span style="color:rgb(139,0,0);" class="sh_symbol">=</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">%</span><span style="color:purple;" class="sh_number">6</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
    <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><span style="color:black;font-weight:bold;" class="sh_function">abs</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>kx<span style="color:rgb(139,0,0);" class="sh_symbol">-</span>kn<span style="color:rgb(139,0,0);" class="sh_symbol">)+</span><span style="color:black;font-weight:bold;" class="sh_function">abs</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span>ky<span style="color:rgb(139,0,0);" class="sh_symbol">-</span>km<span style="color:rgb(139,0,0);" class="sh_symbol">)&lt;=</span><span style="color:purple;" class="sh_number">1</span><span style="color:rgb(139,0,0);" class="sh_symbol">)</span>
     gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">]=</span><span style="color:purple;" class="sh_number">1</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
    <span style="color:blue;font-weight:bold;" class="sh_keyword">else</span>
     gass<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">][</span>j<span style="color:rgb(139,0,0);" class="sh_symbol">]=</span><span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
   <span style="color:red;" class="sh_cbracket">}</span>
  <span style="color:red;" class="sh_cbracket">}</span>

  <span style="color:black;font-weight:bold;" class="sh_function">Gauss</span><span style="color:rgb(139,0,0);" class="sh_symbol">();</span>
  <span style="color:blue;font-weight:bold;" class="sh_keyword">for</span> <span style="color:rgb(139,0,0);" class="sh_symbol">(</span>i <span style="color:rgb(139,0,0);" class="sh_symbol">=</span> <span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span> i <span style="color:rgb(139,0,0);" class="sh_symbol">&lt;</span> <span style="color:purple;" class="sh_number">30</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span> i<span style="color:rgb(139,0,0);" class="sh_symbol">++)</span> <span style="color:red;" class="sh_cbracket">{</span>
            <span style="color:black;font-weight:bold;" class="sh_function">printf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><span style="color:red;" class="sh_string"><font face="新宋体">&quot;%d&quot;</font></span><span style="color:rgb(139,0,0);" class="sh_symbol">,</span>ans<span style="color:rgb(139,0,0);" class="sh_symbol">[</span>i<span style="color:rgb(139,0,0);" class="sh_symbol">]);</span>
            <span style="color:blue;font-weight:bold;" class="sh_keyword">if</span> <span style="color:rgb(139,0,0);" class="sh_symbol">((</span>i <span style="color:rgb(139,0,0);" class="sh_symbol">+</span> <span style="color:purple;" class="sh_number">1</span><span style="color:rgb(139,0,0);" class="sh_symbol">)</span> <span style="color:rgb(139,0,0);" class="sh_symbol">%</span> <span style="color:purple;" class="sh_number">6</span> <span style="color:rgb(139,0,0);" class="sh_symbol">==</span> <span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">)</span><span style="color:black;font-weight:bold;" class="sh_function">printf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><font face="新宋体"><span style="color:red;" class="sh_string">&quot;</span><span style="color:rgb(255,192,203);" class="sh_specialchar">\n</span><span style="color:red;" class="sh_string">&quot;</span></font><span style="color:rgb(139,0,0);" class="sh_symbol">);</span>
            <span style="color:blue;font-weight:bold;" class="sh_keyword">else</span>
                <span style="color:black;font-weight:bold;" class="sh_function">printf</span><span style="color:rgb(139,0,0);" class="sh_symbol">(</span><span style="color:red;" class="sh_string"><font face="新宋体">&quot; &quot;</font></span><span style="color:rgb(139,0,0);" class="sh_symbol">);</span>
        <span style="color:red;" class="sh_cbracket">}</span>
 <span style="color:red;" class="sh_cbracket">}</span>
 <span style="color:blue;font-weight:bold;" class="sh_keyword">return</span> <span style="color:purple;" class="sh_number">0</span><span style="color:rgb(139,0,0);" class="sh_symbol">;</span>
<span style="color:red;" class="sh_cbracket">}</span></pre>
<p></span></span></span></font></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heike567.wordpress.com/16/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heike567.wordpress.com/16/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heike567.wordpress.com/16/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=16&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heike567.wordpress.com/2010/04/05/%e3%80%90gauss%e6%b6%88%e5%85%83%e3%80%91pku1222-light-out-game/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c3cafec983dc6eaa9ffbdfbac170914?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">heike567</media:title>
		</media:content>
	</item>
		<item>
		<title>【MST】hdu3371 求最小生成树</title>
		<link>http://heike567.wordpress.com/2010/04/05/%e3%80%90mst%e3%80%91hdu3371-%e6%b1%82%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91/</link>
		<comments>http://heike567.wordpress.com/2010/04/05/%e3%80%90mst%e3%80%91hdu3371-%e6%b1%82%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:29:37 +0000</pubDate>
		<dc:creator>heike567</dc:creator>
				<category><![CDATA[ACM/ICPC]]></category>
		<category><![CDATA[图论]]></category>

		<guid isPermaLink="false">http://heike567.wordpress.com/?p=14</guid>
		<description><![CDATA[这道题掐时间掐的很紧。处理重边后才能过。 这道题就是求最小生成树，我将已经连通的city缩成一个点 然后求最小生成树 #include&#60;iostream&#62; #include&#60;algorithm&#62; #include&#60;vector&#62; using namespace std; #define maxn 25005 struct Node{ int u,v; int w; }node[maxn]; int rank[505],p[505]; void makeset(int n) { int i; for(i=0;i&#60;=n;i++) { rank[i]=0; p[i]=i; } } int findset(int x) { if(x!=p[x]) p[x]=findset(p[x]); return p[x]; } void unionset(int x,int y) { x=findset(x); y=findset(y); if(rank[x]&#62;rank[y]) p[y]=x; else { p[x]=y; if(rank[x]==rank[y]) <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=14&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>这道题掐时间掐的很紧。处理重边后才能过。</p>
<p>这道题就是求最小生成树，我将已经连通的city缩成一个点 然后求最小生成树</p>
<p><span style="widows:2;text-transform:none;text-indent:0;border-collapse:separate;font:medium Simsun;white-space:normal;orphans:2;letter-spacing:normal;color:rgb(0,0,0);word-spacing:0;" class="Apple-style-span"><span class="Apple-style-span"></p>
<div style="padding:10px;">
<pre><font color="#0000ff">#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;vector&gt;
</font><strong><font color="#0000ff">using namespace</font></strong> std<strong><font color="#ff00ff">;</font></strong><font color="#0000ff">
#define maxn 25005
</font><strong><font color="#0000ff">struct</font></strong> Node<strong><font color="#ff00ff">{</font></strong><strong><font color="#0000ff">
    int</font></strong> u<strong><font color="#ff00ff">,</font></strong>v<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    int</font></strong> w<strong><font color="#ff00ff">;
}</font></strong>node<strong><font color="#ff00ff">[</font></strong>maxn<strong><font color="#ff00ff">];</font></strong><strong><font color="#0000ff">
int</font></strong> rank<strong><font color="#ff00ff">[</font></strong><font color="#cc3300">505</font><strong><font color="#ff00ff">],</font></strong>p<strong><font color="#ff00ff">[</font></strong><font color="#cc3300">505</font><strong><font color="#ff00ff">];</font></strong><strong><font color="#0000ff">
void</font></strong> makeset<strong><font color="#ff00ff">(</font></strong><strong><font color="#0000ff">int</font></strong> n<strong><font color="#ff00ff">)
{</font></strong><strong><font color="#0000ff">
    int</font></strong> i<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    for</font></strong><strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">&lt;=</font></strong>n<strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">++)
    {</font></strong>
        rank<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">]=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>
        p<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">]=</font></strong>i<strong><font color="#ff00ff">;
    }
}</font></strong><strong><font color="#0000ff">
int</font></strong> findset<strong><font color="#ff00ff">(</font></strong><strong><font color="#0000ff">int</font></strong> x<strong><font color="#ff00ff">)
{</font></strong><strong><font color="#0000ff">
    if</font></strong><strong><font color="#ff00ff">(</font></strong>x<strong><font color="#ff00ff">!=</font></strong>p<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">])</font></strong>
        p<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">]=</font></strong>findset<strong><font color="#ff00ff">(</font></strong>p<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">]);</font></strong><strong><font color="#0000ff">
    return</font></strong> p<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">];
}</font></strong><strong><font color="#0000ff">
void</font></strong> unionset<strong><font color="#ff00ff">(</font></strong><strong><font color="#0000ff">int</font></strong> x<strong><font color="#ff00ff">,</font></strong><strong><font color="#0000ff">int</font></strong> y<strong><font color="#ff00ff">)
{</font></strong>
    x<strong><font color="#ff00ff">=</font></strong>findset<strong><font color="#ff00ff">(</font></strong>x<strong><font color="#ff00ff">);</font></strong>
    y<strong><font color="#ff00ff">=</font></strong>findset<strong><font color="#ff00ff">(</font></strong>y<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
    if</font></strong><strong><font color="#ff00ff">(</font></strong>rank<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">]&gt;</font></strong>rank<strong><font color="#ff00ff">[</font></strong>y<strong><font color="#ff00ff">])</font></strong>
        p<strong><font color="#ff00ff">[</font></strong>y<strong><font color="#ff00ff">]=</font></strong>x<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    else</font></strong><strong><font color="#ff00ff">
    {</font></strong>
        p<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">]=</font></strong>y<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
        if</font></strong><strong><font color="#ff00ff">(</font></strong>rank<strong><font color="#ff00ff">[</font></strong>x<strong><font color="#ff00ff">]==</font></strong>rank<strong><font color="#ff00ff">[</font></strong>y<strong><font color="#ff00ff">])</font></strong>
            rank<strong><font color="#ff00ff">[</font></strong>y<strong><font color="#ff00ff">]++;
    }
}</font></strong><strong><font color="#0000ff">
bool</font></strong> cmp<strong><font color="#ff00ff">(</font></strong>Node n1<strong><font color="#ff00ff">,</font></strong>Node n2<strong><font color="#ff00ff">)
{</font></strong><strong><font color="#0000ff">
    return</font></strong> n1<strong><font color="#ff00ff">.</font></strong>w<strong><font color="#ff00ff">&lt;</font></strong>n2<strong><font color="#ff00ff">.</font></strong>w<strong><font color="#ff00ff">;
}</font></strong><strong><font color="#0000ff">
int</font></strong> sum<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
void</font></strong> Kruskal<strong><font color="#ff00ff">(</font></strong><strong><font color="#0000ff">int</font></strong> n<strong><font color="#ff00ff">)
{</font></strong><strong><font color="#0000ff">
    int</font></strong> i<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    for</font></strong><strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">&lt;</font></strong>n<strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">++)
    {</font></strong><strong><font color="#0000ff">
        int</font></strong> u<strong><font color="#ff00ff">=</font></strong>findset<strong><font color="#ff00ff">(</font></strong>node<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">].</font></strong>u<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        int</font></strong> v<strong><font color="#ff00ff">=</font></strong>findset<strong><font color="#ff00ff">(</font></strong>node<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">].</font></strong>v<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        if</font></strong><strong><font color="#ff00ff">(</font></strong>u<strong><font color="#ff00ff">!=</font></strong>v<strong><font color="#ff00ff">)
        {</font></strong>
            sum<strong><font color="#ff00ff">+=</font></strong>node<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">].</font></strong>w<strong><font color="#ff00ff">;</font></strong>
            unionset<strong><font color="#ff00ff">(</font></strong>node<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">].</font></strong>v<strong><font color="#ff00ff">,</font></strong>node<strong><font color="#ff00ff">[</font></strong>i<strong><font color="#ff00ff">].</font></strong>u<strong><font color="#ff00ff">);
        }
    }
}</font></strong><strong><font color="#0000ff">
int</font></strong> hash<strong><font color="#ff00ff">[</font></strong><font color="#cc3300">505</font><strong><font color="#ff00ff">][</font></strong><font color="#cc3300">505</font><strong><font color="#ff00ff">];</font></strong><strong><font color="#0000ff">
int</font></strong><strong><font color="#0000ff"> main</font></strong><strong><font color="#ff00ff">()
{</font></strong><strong><font color="#0000ff">
    int</font></strong> n<strong><font color="#ff00ff">,</font></strong> m<strong><font color="#ff00ff">,</font></strong>k<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    int</font></strong> i<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    int</font></strong> T<strong><font color="#ff00ff">,</font></strong>t<strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
    int</font></strong> u<strong><font color="#ff00ff">,</font></strong>v<strong><font color="#ff00ff">,</font></strong>w<strong><font color="#ff00ff">;</font></strong>
    scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>T<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
    while</font></strong><strong><font color="#ff00ff"> (</font></strong>T<strong><font color="#ff00ff">--)
    {</font></strong>
        memset<strong><font color="#ff00ff">(</font></strong>hash<strong><font color="#ff00ff">,-</font></strong><font color="#cc3300">1</font><strong><font color="#ff00ff">,</font></strong><strong><font color="#0000ff">sizeof</font></strong><strong><font color="#ff00ff">(</font></strong>hash<strong><font color="#ff00ff">));</font></strong>
        scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d%d%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>n<strong><font color="#ff00ff">,&amp;</font></strong>m<strong><font color="#ff00ff">,&amp;</font></strong>k<strong><font color="#ff00ff">);</font></strong>
        makeset<strong><font color="#ff00ff">(</font></strong>n<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        int</font></strong> ind<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
        for</font></strong><strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">&lt;</font></strong>m<strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">++)
        {</font></strong>
            scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d%d%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>u<strong><font color="#ff00ff">,&amp;</font></strong>v<strong><font color="#ff00ff">,&amp;</font></strong>w<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
            if</font></strong><strong><font color="#ff00ff">(</font></strong>hash<strong><font color="#ff00ff">[</font></strong>u<strong><font color="#ff00ff">][</font></strong>v<strong><font color="#ff00ff">]==-</font></strong><font color="#cc3300">1</font><strong><font color="#ff00ff">&amp;&amp;</font></strong>hash<strong><font color="#ff00ff">[</font></strong>v<strong><font color="#ff00ff">][</font></strong>u<strong><font color="#ff00ff">]==-</font></strong><font color="#cc3300">1</font><strong><font color="#ff00ff">)
            {</font></strong>
                node<strong><font color="#ff00ff">[</font></strong>ind<strong><font color="#ff00ff">].</font></strong>u<strong><font color="#ff00ff">=</font></strong>u<strong><font color="#ff00ff">;</font></strong>
                node<strong><font color="#ff00ff">[</font></strong>ind<strong><font color="#ff00ff">].</font></strong>v<strong><font color="#ff00ff">=</font></strong>v<strong><font color="#ff00ff">;</font></strong>
                node<strong><font color="#ff00ff">[</font></strong>ind<strong><font color="#ff00ff">].</font></strong>w<strong><font color="#ff00ff">=</font></strong>w<strong><font color="#ff00ff">;</font></strong>
                hash<strong><font color="#ff00ff">[</font></strong>u<strong><font color="#ff00ff">][</font></strong>v<strong><font color="#ff00ff">]=</font></strong>hash<strong><font color="#ff00ff">[</font></strong>v<strong><font color="#ff00ff">][</font></strong>u<strong><font color="#ff00ff">]=</font></strong>ind<strong><font color="#ff00ff">;</font></strong>
                ind<strong><font color="#ff00ff">++;
            }</font></strong><strong><font color="#0000ff">
            else</font></strong><strong><font color="#ff00ff">
            {</font></strong><strong><font color="#0000ff">
                if</font></strong><strong><font color="#ff00ff">(</font></strong>node<strong><font color="#ff00ff">[</font></strong>hash<strong><font color="#ff00ff">[</font></strong>u<strong><font color="#ff00ff">][</font></strong>v<strong><font color="#ff00ff">]].</font></strong>w<strong><font color="#ff00ff">&gt;</font></strong>w<strong><font color="#ff00ff">)</font></strong>node<strong><font color="#ff00ff">[</font></strong>hash<strong><font color="#ff00ff">[</font></strong>u<strong><font color="#ff00ff">][</font></strong>v<strong><font color="#ff00ff">]].</font></strong>w<strong><font color="#ff00ff">=</font></strong>w<strong><font color="#ff00ff">;
            }
        }</font></strong>
        sort<strong><font color="#ff00ff">(</font></strong>node<strong><font color="#ff00ff">,</font></strong>node<strong><font color="#ff00ff">+</font></strong>ind<strong><font color="#ff00ff">,</font></strong>cmp<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        for</font></strong><strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">&lt;</font></strong>k<strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">++)
        {</font></strong>
            scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>t<strong><font color="#ff00ff">);</font></strong>
            scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>u<strong><font color="#ff00ff">);</font></strong>
            t<strong><font color="#ff00ff">--;</font></strong><strong><font color="#0000ff">
            while</font></strong><strong><font color="#ff00ff">(</font></strong>t<strong><font color="#ff00ff">--)
            {</font></strong>
                scanf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d&quot;</font><strong><font color="#ff00ff">,&amp;</font></strong>v<strong><font color="#ff00ff">);</font></strong>
                unionset<strong><font color="#ff00ff">(</font></strong>u<strong><font color="#ff00ff">,</font></strong>v<strong><font color="#ff00ff">);
            }
        }</font></strong>
        sum<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">0</font><strong><font color="#ff00ff">;</font></strong>
        Kruskal<strong><font color="#ff00ff">(</font></strong>ind<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        int</font></strong> fa<strong><font color="#ff00ff">=</font></strong>findset<strong><font color="#ff00ff">(</font></strong><font color="#cc3300">1</font><strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
        bool</font></strong> flag<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">true</font><strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">
        for</font></strong><strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">2</font><strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">&lt;=</font></strong>n<strong><font color="#ff00ff">;</font></strong>i<strong><font color="#ff00ff">++)</font></strong><strong><font color="#0000ff">
            if</font></strong><strong><font color="#ff00ff">(</font></strong>findset<strong><font color="#ff00ff">(</font></strong>i<strong><font color="#ff00ff">)!=</font></strong>fa<strong><font color="#ff00ff">){</font></strong>
                flag<strong><font color="#ff00ff">=</font></strong><font color="#cc3300">false</font><strong><font color="#ff00ff">;</font></strong><strong><font color="#0000ff">break</font></strong><strong><font color="#ff00ff">;
            }</font></strong><strong><font color="#0000ff">
            if</font></strong><strong><font color="#ff00ff">(</font></strong>flag<strong><font color="#ff00ff">)</font></strong>
                printf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;%d\n&quot;</font><strong><font color="#ff00ff">,</font></strong>sum<strong><font color="#ff00ff">);</font></strong><strong><font color="#0000ff">
            else</font></strong> printf<strong><font color="#ff00ff">(</font></strong><font color="#008000">&quot;-1\n&quot;</font><strong><font color="#ff00ff">);
    }</font></strong><strong><font color="#0000ff">
    return</font></strong><font color="#cc3300"> 0</font><strong><font color="#ff00ff">;
}</font></strong></pre>
</div>
<p></span></span> </p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heike567.wordpress.com/14/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heike567.wordpress.com/14/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heike567.wordpress.com/14/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=14&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heike567.wordpress.com/2010/04/05/%e3%80%90mst%e3%80%91hdu3371-%e6%b1%82%e6%9c%80%e5%b0%8f%e7%94%9f%e6%88%90%e6%a0%91/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c3cafec983dc6eaa9ffbdfbac170914?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">heike567</media:title>
		</media:content>
	</item>
		<item>
		<title>【伪森林pseudoforest】hdu3367</title>
		<link>http://heike567.wordpress.com/2010/04/05/acmicpc/</link>
		<comments>http://heike567.wordpress.com/2010/04/05/acmicpc/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 12:20:31 +0000</pubDate>
		<dc:creator>heike567</dc:creator>
				<category><![CDATA[ACM/图论]]></category>
		<category><![CDATA[ACM/ICPC]]></category>

		<guid isPermaLink="false">http://heike567.wordpress.com/2010/04/05/%e3%80%90%e4%bc%aa%e6%a3%ae%e6%9e%97pseudoforest%e3%80%91hdu3367/</guid>
		<description><![CDATA[具体什么意思可以到wikipedia （ENG）去查，那里将的很详细。 #include&#60;iostream&#62; #include&#60;algorithm&#62; #include&#60;vector&#62; using namespace std; #define maxn 100005 struct Node{ int u,v; int w; }node[maxn]; int rank[10005],p[10005]; void makeset(int n) { int i; for(i=0;i&#60;=n;i++) { rank[i]=0; p[i]=i; } } int findset(int x) { if(x!=p[x]) p[x]=findset(p[x]); return p[x]; } void unionset(int x,int y) { x=findset(x); y=findset(y); if(rank[x]&#62;rank[y]) p[y]=x; else { p[x]=y; if(rank[x]==rank[y]) rank[y]++; <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=10&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>具体什么意思可以到wikipedia （ENG）去查，那里将的很详细。</p>
<p><span class="Apple-style-span" style="widows:2;text-transform:none;text-indent:0;border-collapse:separate;font:medium Simsun;white-space:normal;orphans:2;letter-spacing:normal;color:#000000;word-spacing:0;"><span class="Apple-style-span"></span></span><br class="Apple-interchange-newline" /></p>
<div style="padding:10px;">
<pre><span style="color:#0000ff;">#include&lt;iostream&gt;
#include&lt;algorithm&gt;
#include&lt;vector&gt;
</span><strong><span style="color:#0000ff;">using namespace</span></strong> std<strong><span style="color:#ff00ff;">;</span></strong><span style="color:#0000ff;">
#define maxn 100005
</span><strong><span style="color:#0000ff;">struct</span></strong> Node<strong><span style="color:#ff00ff;">{</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> u<strong><span style="color:#ff00ff;">,</span></strong>v<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> w<strong><span style="color:#ff00ff;">;
}</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>maxn<strong><span style="color:#ff00ff;">];</span></strong><strong><span style="color:#0000ff;">
int</span></strong> rank<strong><span style="color:#ff00ff;">[</span></strong><span style="color:#cc3300;">10005</span><strong><span style="color:#ff00ff;">],</span></strong>p<strong><span style="color:#ff00ff;">[</span></strong><span style="color:#cc3300;">10005</span><strong><span style="color:#ff00ff;">];</span></strong><strong><span style="color:#0000ff;">
void</span></strong> makeset<strong><span style="color:#ff00ff;">(</span></strong><strong><span style="color:#0000ff;">int</span></strong> n<strong><span style="color:#ff00ff;">)
{</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> i<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    for</span></strong><strong><span style="color:#ff00ff;">(</span></strong>i<strong><span style="color:#ff00ff;">=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">&lt;=</span></strong>n<strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">++)
    {</span></strong>
        rank<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">]=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>
        p<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">]=</span></strong>i<strong><span style="color:#ff00ff;">;
    }
}</span></strong><strong><span style="color:#0000ff;">
int</span></strong> findset<strong><span style="color:#ff00ff;">(</span></strong><strong><span style="color:#0000ff;">int</span></strong> x<strong><span style="color:#ff00ff;">)
{</span></strong><strong><span style="color:#0000ff;">
    if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>x<strong><span style="color:#ff00ff;">!=</span></strong>p<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">])</span></strong>
        p<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">]=</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>p<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">]);</span></strong><strong><span style="color:#0000ff;">
    return</span></strong> p<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">];
}</span></strong><strong><span style="color:#0000ff;">
void</span></strong> unionset<strong><span style="color:#ff00ff;">(</span></strong><strong><span style="color:#0000ff;">int</span></strong> x<strong><span style="color:#ff00ff;">,</span></strong><strong><span style="color:#0000ff;">int</span></strong> y<strong><span style="color:#ff00ff;">)
{</span></strong>
    x<strong><span style="color:#ff00ff;">=</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>x<strong><span style="color:#ff00ff;">);</span></strong>
    y<strong><span style="color:#ff00ff;">=</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>y<strong><span style="color:#ff00ff;">);</span></strong><strong><span style="color:#0000ff;">
    if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>rank<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">]&gt;</span></strong>rank<strong><span style="color:#ff00ff;">[</span></strong>y<strong><span style="color:#ff00ff;">])</span></strong>
        p<strong><span style="color:#ff00ff;">[</span></strong>y<strong><span style="color:#ff00ff;">]=</span></strong>x<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    else</span></strong><strong><span style="color:#ff00ff;">
    {</span></strong>
        p<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">]=</span></strong>y<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
        if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>rank<strong><span style="color:#ff00ff;">[</span></strong>x<strong><span style="color:#ff00ff;">]==</span></strong>rank<strong><span style="color:#ff00ff;">[</span></strong>y<strong><span style="color:#ff00ff;">])</span></strong>
            rank<strong><span style="color:#ff00ff;">[</span></strong>y<strong><span style="color:#ff00ff;">]++;
    }
}</span></strong><strong><span style="color:#0000ff;">
bool</span></strong> cmp<strong><span style="color:#ff00ff;">(</span></strong>Node n1<strong><span style="color:#ff00ff;">,</span></strong>Node n2<strong><span style="color:#ff00ff;">)
{</span></strong><strong><span style="color:#0000ff;">
    return</span></strong> n1<strong><span style="color:#ff00ff;">.</span></strong>w<strong><span style="color:#ff00ff;">&gt;</span></strong>n2<strong><span style="color:#ff00ff;">.</span></strong>w<strong><span style="color:#ff00ff;">;
}</span></strong><strong><span style="color:#0000ff;">
int</span></strong> ans<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
int</span></strong> num<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
int</span></strong> N<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
bool</span></strong> used<strong><span style="color:#ff00ff;">[</span></strong>maxn<strong><span style="color:#ff00ff;">];</span></strong><strong><span style="color:#0000ff;">
bool</span></strong> flag<strong><span style="color:#ff00ff;">[</span></strong>maxn<strong><span style="color:#ff00ff;">];</span></strong><strong><span style="color:#0000ff;">
int</span></strong> sum<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
int</span></strong> ind<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
void</span></strong> Kruskal<strong><span style="color:#ff00ff;">(</span></strong><strong><span style="color:#0000ff;">int</span></strong> n<strong><span style="color:#ff00ff;">)
{</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> i<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    for</span></strong><strong><span style="color:#ff00ff;">(</span></strong>i<strong><span style="color:#ff00ff;">=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">&lt;</span></strong>n<strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">++)
    {</span></strong><strong><span style="color:#0000ff;">
        int</span></strong> u<strong><span style="color:#ff00ff;">=</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>u<strong><span style="color:#ff00ff;">);</span></strong><strong><span style="color:#0000ff;">
        int</span></strong> v<strong><span style="color:#ff00ff;">=</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>v<strong><span style="color:#ff00ff;">);</span></strong><strong><span style="color:#0000ff;">
        if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>u<strong><span style="color:#ff00ff;">!=</span></strong>v<strong><span style="color:#ff00ff;">)
        {</span></strong><strong><span style="color:#0000ff;">
            if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>used<strong><span style="color:#ff00ff;">[</span></strong>u<strong><span style="color:#ff00ff;">]&amp;&amp;</span></strong>used<strong><span style="color:#ff00ff;">[</span></strong>v<strong><span style="color:#ff00ff;">])</span></strong><strong><span style="color:#0000ff;">continue</span></strong><strong><span style="color:#ff00ff;">;</span></strong>
            sum<strong><span style="color:#ff00ff;">+=</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>w<strong><span style="color:#ff00ff;">;</span></strong>
            unionset<strong><span style="color:#ff00ff;">(</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>v<strong><span style="color:#ff00ff;">,</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>u<strong><span style="color:#ff00ff;">);</span></strong>
            used<strong><span style="color:#ff00ff;">[</span></strong>findset<strong><span style="color:#ff00ff;">(</span></strong>u<strong><span style="color:#ff00ff;">)]=</span></strong>used<strong><span style="color:#ff00ff;">[</span></strong>u<strong><span style="color:#ff00ff;">]|</span></strong>used<strong><span style="color:#ff00ff;">[</span></strong>v<strong><span style="color:#ff00ff;">];
        }</span></strong><strong><span style="color:#0000ff;">
        else</span></strong><strong><span style="color:#ff00ff;">
        {</span></strong><strong><span style="color:#0000ff;">
            if</span></strong><strong><span style="color:#ff00ff;">(</span></strong>used<strong><span style="color:#ff00ff;">[</span></strong>u<strong><span style="color:#ff00ff;">])</span></strong><strong><span style="color:#0000ff;">continue</span></strong><strong><span style="color:#ff00ff;">;</span></strong>
            sum<strong><span style="color:#ff00ff;">+=</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>w<strong><span style="color:#ff00ff;">;</span></strong>
            used<strong><span style="color:#ff00ff;">[</span></strong>u<strong><span style="color:#ff00ff;">]=</span></strong><span style="color:#cc3300;">1</span><strong><span style="color:#ff00ff;">;
        }
    }
}</span></strong><strong><span style="color:#0000ff;">
int</span></strong><strong><span style="color:#0000ff;"> main</span></strong><strong><span style="color:#ff00ff;">()
{</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> m<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    int</span></strong> i<strong><span style="color:#ff00ff;">,</span></strong>j<strong><span style="color:#ff00ff;">;</span></strong><strong><span style="color:#0000ff;">
    while</span></strong><strong><span style="color:#ff00ff;"> (</span></strong>scanf<strong><span style="color:#ff00ff;">(</span></strong><span style="color:#008000;">"%d%d"</span><strong><span style="color:#ff00ff;">,&amp;</span></strong>N<strong><span style="color:#ff00ff;">,&amp;</span></strong>m<strong><span style="color:#ff00ff;">)&amp;&amp;(</span></strong>N<strong><span style="color:#ff00ff;">||</span></strong>m<strong><span style="color:#ff00ff;">))
    {</span></strong>
        sum<strong><span style="color:#ff00ff;">=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>
        memset<strong><span style="color:#ff00ff;">(</span></strong>used<strong><span style="color:#ff00ff;">,</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">,</span></strong><strong><span style="color:#0000ff;">sizeof</span></strong><strong><span style="color:#ff00ff;">(</span></strong>used<strong><span style="color:#ff00ff;">));</span></strong>
        memset<strong><span style="color:#ff00ff;">(</span></strong>flag<strong><span style="color:#ff00ff;">,</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">,</span></strong><strong><span style="color:#0000ff;">sizeof</span></strong><strong><span style="color:#ff00ff;">(</span></strong>flag<strong><span style="color:#ff00ff;">));</span></strong>
        makeset<strong><span style="color:#ff00ff;">(</span></strong>N<strong><span style="color:#ff00ff;">);</span></strong><strong><span style="color:#0000ff;">
        for</span></strong><strong><span style="color:#ff00ff;">(</span></strong>i<strong><span style="color:#ff00ff;">=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">&lt;</span></strong>m<strong><span style="color:#ff00ff;">;</span></strong>i<strong><span style="color:#ff00ff;">++)</span></strong>
                    scanf<strong><span style="color:#ff00ff;">(</span></strong><span style="color:#008000;">"%d%d%d"</span><strong><span style="color:#ff00ff;">,&amp;</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>u<strong><span style="color:#ff00ff;">,&amp;</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>v<strong><span style="color:#ff00ff;">,&amp;</span></strong>node<strong><span style="color:#ff00ff;">[</span></strong>i<strong><span style="color:#ff00ff;">].</span></strong>w<strong><span style="color:#ff00ff;">);</span></strong>
        sort<strong><span style="color:#ff00ff;">(</span></strong>node<strong><span style="color:#ff00ff;">,</span></strong>node<strong><span style="color:#ff00ff;">+</span></strong>m<strong><span style="color:#ff00ff;">,</span></strong>cmp<strong><span style="color:#ff00ff;">);</span></strong>
        ind<strong><span style="color:#ff00ff;">=</span></strong><span style="color:#cc3300;">0</span><strong><span style="color:#ff00ff;">;</span></strong>
        Kruskal<strong><span style="color:#ff00ff;">(</span></strong>m<strong><span style="color:#ff00ff;">);</span></strong>
        printf<strong><span style="color:#ff00ff;">(</span></strong><span style="color:#008000;">"%d\n"</span><strong><span style="color:#ff00ff;">,</span></strong>sum<strong><span style="color:#ff00ff;">);
    }</span></strong><strong><span style="color:#0000ff;">
    return</span></strong><span style="color:#cc3300;"> 0</span><strong><span style="color:#ff00ff;">;
}</span></strong></pre>
</div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heike567.wordpress.com/10/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heike567.wordpress.com/10/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heike567.wordpress.com/10/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=10&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heike567.wordpress.com/2010/04/05/acmicpc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c3cafec983dc6eaa9ffbdfbac170914?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">heike567</media:title>
		</media:content>
	</item>
		<item>
		<title>Hello world!</title>
		<link>http://heike567.wordpress.com/2010/04/05/hello-world/</link>
		<comments>http://heike567.wordpress.com/2010/04/05/hello-world/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 11:36:52 +0000</pubDate>
		<dc:creator>heike567</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=1&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Welcome to <a href="http://wordpress.com/">WordPress.com</a>. This is your first post. Edit or delete it and start blogging!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/heike567.wordpress.com/1/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/heike567.wordpress.com/1/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/heike567.wordpress.com/1/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=heike567.wordpress.com&amp;blog=12975180&amp;post=1&amp;subd=heike567&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://heike567.wordpress.com/2010/04/05/hello-world/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9c3cafec983dc6eaa9ffbdfbac170914?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">heike567</media:title>
		</media:content>
	</item>
	</channel>
</rss>
