青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

我住包子山

this->blog.MoveTo("blog.baozishan.in")

zju1942解題報告

這道題我用了Kruscal+并查集算的
之前并查集用的不對,所以一直WA
并查集代碼來自我的那本寫數據結構與算法分析c++版 knuth的徒孫的網站

#include <cstdio>
#include 
<vector>
#include 
<cmath>
#include 
<algorithm>
using namespace std;

#ifndef DISJ_SETS_H
#define DISJ_SETS_H

// DisjSets class
//
// CONSTRUCTION: with int representing initial number of sets
//
// ******************PUBLIC OPERATIONS*********************
// void union( root1, root2 ) --> Merge two sets
// int find( x )              --> Return set containing x
// ******************ERRORS********************************
// No error checking is performed

#include 
<vector>
using namespace std;

/**
 * Disjoint set class.
 * Use union by rank and path compression.
 * Elements in the set are numbered starting at 0.
 
*/

class DisjSets
{
  
public:
    
explicit DisjSets( int numElements );

    
int find( int x ) const;
    
int find( int x );
    
void unionSets( int root1, int root2 );

  
private:
    vector
<int> s;
}
;

#endif


/**
 * Construct the disjoint sets object.
 * numElements is the initial number of disjoint sets.
 
*/

DisjSets::DisjSets( 
int numElements ) : s( numElements )
{
    
forint i = 0; i < s.size( ); i++ )
        s[ i ] 
= -1;
}


/**
 * Union two disjoint sets.
 * For simplicity, we assume root1 and root2 are distinct
 * and represent set names.
 * root1 is the root of set 1.
 * root2 is the root of set 2.
 
*/

void DisjSets::unionSets( int root1, int root2 )
{
//    if( s[ root2 ] < s[ root1 ] )  // root2 is deeper
        s[ root1 ] = root2;        // Make root2 new root
    
//else
    
//{
    
//    if( s[ root1 ] == s[ root2 ] )
    
//        s[ root1 ]--;          // Update height if same
    
//    s[ root2 ] = root1;        // Make root1 new root
    
//}
}



/**
 * Perform a find.
 * Error checks omitted again for simplicity.
 * Return the set containing x.
 
*/

int DisjSets::find( int x ) const
{
    
if( s[ x ] < 0 )
        
return x;
    
else
        
return find( s[ x ] );
}



/**
 * Perform a find with path compression.
 * Error checks omitted again for simplicity.
 * Return the set containing x.
 
*/

int DisjSets::find( int x )
{
    
if( s[ x ] < 0 )
        
return x;
    
else
        
return s[ x ] = find( s[ x ] );
}



struct Gedge
{
    
int startnumber;
    
int endnumber;
    
double weight;
    Gedge(
int s,int e,double w):startnumber(s),endnumber(e),weight(w){}
}
;
struct Gnode
{
    
int x;
    
int y;
    Gnode(
int xx,int yy):x(xx),y(yy){}
    Gnode():x(
0),y(0){}
    
static double dis(const Gnode & n1, const Gnode & n2)
    
{
        
double d1=(n1.x-n2.x)*(n1.x-n2.x)+(n1.y-n2.y)*(n1.y-n2.y);
        
return d1;
    }


}
;

bool comp(const Gedge& g1,const Gedge& g2)
{
    
return g1.weight<g2.weight;
}

vector
<Gedge> edgeV;
Gnode nodeArray[
201];
int main()
{
    
int n=0,cnt=1;
    
while(scanf("%d",&n)!=EOF)
    
{
        
if(n==0)break;
        
for(int i=0;i<n;i++)
        
{
            scanf(
"%d %d",&nodeArray[i].x,&nodeArray[i].y);
        }

        
for(int i=0;i<n-1;i++)
        
{
            
for(int j=i+1;j<n;j++)
            
{
                edgeV.push_back(Gedge(i,j,Gnode::dis(nodeArray[i],nodeArray[j])));
            }

        }

        DisjSets ds(n
+1);
        
double minstep=0;
        sort(edgeV.begin(),edgeV.end(),comp);
        
while(ds.find(0)!=ds.find(1))
        
{
            minstep
=edgeV[0].weight;
            
int a=ds.find(edgeV[0].startnumber);
            
int b=ds.find(edgeV[0].endnumber);
            
if(a!=b)
            
{
                ds.unionSets(a,b);               
            }

            edgeV.erase(edgeV.begin());
        }

        printf(
"Scenario #%d\nFrog Distance = %.3lf\n\n",cnt++,sqrt(minstep));
        edgeV.clear();
    }

}

posted on 2007-07-28 21:04 Gohan 閱讀(470) 評論(0)  編輯 收藏 引用 所屬分類: C++Practise

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美久久99| 国产精品高清在线| 精品91免费| 模特精品在线| 美女日韩在线中文字幕| 亚洲精品日本| 亚洲人www| 欧美日韩在线一区二区| 性感少妇一区| 久久香蕉国产线看观看av| 亚洲第一色中文字幕| 亚洲国产高清在线| 欧美日精品一区视频| 欧美在线高清| 毛片一区二区三区| 亚洲一区在线视频| 欧美夜福利tv在线| 亚洲久色影视| 一区二区三区免费看| 国产精品一区二区三区久久| 久久综合导航| 欧美性色视频在线| 免费观看30秒视频久久| 欧美日韩综合不卡| 久久综合九色九九| 欧美私人啪啪vps| 欧美1级日本1级| 国产精品第三页| 亚洲国产成人久久综合| 国产欧美三级| 亚洲国产小视频| 国产字幕视频一区二区| 亚洲激情网站| 亚洲第一精品影视| 亚洲永久视频| 正在播放欧美一区| 久久久久久久网站| 亚洲制服av| 欧美成人免费va影院高清| 久久成人免费网| 欧美日韩综合| 亚洲国产一区二区三区在线播 | 一区二区三区www| 在线观看欧美视频| 亚洲欧美精品伊人久久| 一区二区三区国产精华| 麻豆精品国产91久久久久久| 久久精品国产欧美亚洲人人爽| 欧美乱妇高清无乱码| 亚洲第一天堂av| 韩国精品在线观看| 亚洲尤物视频在线| 这里只有精品丝袜| 欧美激情视频在线播放| 嫩草国产精品入口| 韩国精品在线观看| 欧美在线亚洲一区| 久久精品官网| 国产欧美在线看| 亚洲欧美在线另类| 欧美一级二区| 国产欧美日韩一区二区三区在线观看 | 亚洲美女中出| 一区二区三区免费在线观看| 欧美精品一区三区| 亚洲国产日韩一区| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 久久最新视频| 精品99一区二区三区| 久久久久成人精品| 美女视频黄免费的久久| 亚洲国产精品福利| 欧美高清在线视频观看不卡| 亚洲国产高清一区| 一区二区三区国产在线| 欧美日韩精品系列| 亚洲一区二区视频| 久久激情网站| 伊大人香蕉综合8在线视| 久久一区二区三区国产精品| 欧美夫妇交换俱乐部在线观看| 亚洲国产精品久久久久秋霞影院| 美女主播一区| 日韩视频精品在线观看| 午夜综合激情| 狠狠色噜噜狠狠狠狠色吗综合| 久久天天躁狠狠躁夜夜av| 欧美大片免费观看| 日韩视频免费| 国产精品美女xx| 久久国产免费看| 亚洲高清一二三区| 亚洲女人天堂av| 精品99一区二区| 欧美日本高清| 校园春色国产精品| 亚洲福利在线视频| 亚洲女同性videos| 一区在线观看视频| 欧美日韩ab| 久久精品官网| 99在线精品视频| 免费观看日韩av| 亚洲视频在线观看一区| 精品不卡视频| 国产精品久久一区二区三区| 久久精品视频免费播放| 99在线精品免费视频九九视| 久久亚洲春色中文字幕久久久| 亚洲精品一线二线三线无人区| 国产精品免费视频观看| 麻豆精品在线播放| 香蕉久久精品日日躁夜夜躁| 亚洲人成在线免费观看| 欧美一区二区三区免费大片| 亚洲精品欧美一区二区三区| 国产一区二区三区久久久| 欧美日产国产成人免费图片| 久久天堂精品| 午夜久久久久久久久久一区二区| 亚洲精品女人| 久久精品一本久久99精品| 亚洲午夜国产一区99re久久| 亚洲电影在线看| 国产午夜精品视频免费不卡69堂| 欧美激情久久久久久| 久久激情五月激情| 亚洲欧美日韩精品久久久| 亚洲美女91| 亚洲国产一区二区三区在线播 | 久久亚洲不卡| 久久国产一区二区三区| 亚洲一区二区三区涩| 亚洲精品人人| 亚洲精品久久久久久久久久久久久 | 欧美一级二区| 亚洲专区欧美专区| 一区二区成人精品| 亚洲日韩欧美视频| 亚洲国产美女精品久久久久∴| 久久美女艺术照精彩视频福利播放| 亚洲欧美国产77777| 夜夜嗨av色一区二区不卡| 最新成人av网站| 亚洲人成网站在线观看播放| 亚洲国产精品va| 亚洲精品一二区| 日韩视频精品在线| 一区二区日韩精品| 中国av一区| 午夜精品理论片| 欧美在线1区| 久久九九热免费视频| 久久夜色精品一区| 欧美成人免费播放| 最新国产乱人伦偷精品免费网站 | 亚洲一区二区伦理| 亚洲综合久久久久| 欧美在线一二三四区| 久久久久久网址| 欧美国产日韩xxxxx| 亚洲乱码国产乱码精品精| 日韩视频免费| 午夜在线电影亚洲一区| 久久九九精品| 欧美区一区二| 国产精品欧美在线| 国内精品写真在线观看| 亚洲福利免费| 亚洲一区在线免费观看| 久久久国产精品一区二区三区| 欧美刺激性大交免费视频| 亚洲精品一品区二品区三品区| 亚洲一级片在线看| 久久亚洲春色中文字幕久久久| 欧美精品福利| 国产亚洲精品久久久久婷婷瑜伽| 亚洲国产精品ⅴa在线观看 | 亚洲精一区二区三区| 午夜精品影院| 欧美电影在线观看完整版| 亚洲午夜伦理| 麻豆精品一区二区av白丝在线| 国产精品mv在线观看| 伊人久久成人| 亚洲制服丝袜在线| 欧美高清视频www夜色资源网| 中文亚洲欧美| 美女精品国产| 国产一区二区视频在线观看| 日韩一区二区精品视频| 久久亚洲春色中文字幕久久久| 亚洲精品视频一区| 久久久久国产精品厨房| 欧美午夜片在线观看| 91久久精品日日躁夜夜躁欧美| 久久精品导航| 亚洲精品偷拍| 另类尿喷潮videofree| 国产日韩欧美电影在线观看|