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

USACO 4.1 Fence Loops


???? 這題是求無向圖中的一個最小環(huán)的長度。
???? 主要思路是:因為邊都是直線,邊的兩點之間的最短距離必然是這個邊長。那么,再求一條到兩頂點的最短距徑,這個路徑與邊構(gòu)成了一個環(huán)。這個環(huán)是包含該邊的最小環(huán)。枚舉一下所有邊,計算出最小環(huán)即可。對于每個邊,刪除該邊,然后計算兩頂點的最短路徑,再恢復(fù)該邊。
???? 但是這個圖的輸入是用邊表示的,一個難點就是將其轉(zhuǎn)換成用點表示。這里用邊的集合來表示一個點。然后用map<set<int>,int>來存儲某一邊對應(yīng)的邊的編號。每找到一個新的頂點則分配一個新的編號。這部分主要通過函數(shù)get_vertex(set<int>&s)來實現(xiàn)。

代碼如下:
#include?<iostream>
#include?
<fstream>
#include?
<set>
#include?
<map>
#include?
<climits>
#include?
<cstring>

using?namespace?std;

ifstream?fin(
"fence6.in");
ofstream?fout(
"fence6.out");

#ifdef?_DEBUG
#define?out?cout
#define?in?cin
#else
#define?out?fout
#define?in?fin
#endif

struct?Edge{
????
int?va,vb,len;
};

int?edge_num;
int?vertex_num;
int?graph[100][100];
Edge?edges[
100];

int?get_vertex(set<int>&s)
{
????
static?map<set<int>,int>vertex;

????
if(?vertex.find(s)?==?vertex.end()?){
????????vertex[s]?
=?vertex_num;
????????
return?vertex_num++;
????}
else{
????????
return?vertex[s];
????}
}

void?build_graph()
{
????
in>>edge_num;

????
for(int?i=0;i<100;++i)
????????
for(int?j=0;j<100;++j)
????????????graph[i][j]?
=?INT_MAX/2;

????
for(int?i=0;i<edge_num;++i){
????????
int?edge,tmp,len;
????????
int?left_num,right_num;
????????
set<int>?s;
????????
in>>edge>>len>>left_num>>right_num;
????????s.insert(edge);
????????
for(int?j=0;j<left_num;++j){
????????????
in>>tmp;
????????????s.insert(tmp);
????????}
????????
int?left_vertex?=?get_vertex(s);
????????s.clear();
????????s.insert(edge);
????????
for(int?j=0;j<right_num;++j){
????????????
in>>tmp;
????????????s.insert(tmp);
????????}
????????
int?right_vertex?=?get_vertex(s);
????????graph[left_vertex][right_vertex]?
=?
????????????graph[right_vertex][left_vertex]?
=?len;
????????edges[i].va?
=?left_vertex;
????????edges[i].vb?
=?right_vertex;
????????edges[i].len?
=?len;
????}
}

int?shortest_path(int?va,int?vb)
{
????
int?shortest[100];
????
bool?visited[100];

????memset(visited,
0,sizeof(visited));
???
????
for(int?i=0;i<vertex_num;++i){
????????shortest[i]?
=?graph[va][i];
????}

????visited[va]?
=?true;

????
while(true){
????????
int?m?=?-1;
????????
for(int?i=0;i<vertex_num;++i){
??????????????
if(!visited[i]){
????????????????
if(m==-1||shortest[i]<shortest[m])
????????????????????m?
=?i;
??????????????}
????????}
????????
//沒有新加結(jié)點了
????????
????????visited[m]?
=?true;

????????
if(?m==vb?)
????????????
return?shortest[vb];

????????
for(int?i=0;i<vertex_num;++i){
????????????
if(!visited[i])
????????????shortest[i]?
=?min(shortest[i],shortest[m]+graph[m][i]);
????????}
????}
}

void?solve()
{
????build_graph();

????
int?best?=?INT_MAX;

????
for(int?i=0;i<edge_num;++i){
??????graph[edges[i].va][edges[i].vb]?
=?graph[edges[i].vb][edges[i].va]?=?INT_MAX/2;?
??????best?
=?min(best,edges[i].len+shortest_path(edges[i].va,edges[i].vb)?);
??????graph[edges[i].va][edges[i].vb]?
=?graph[edges[i].vb][edges[i].va]?=?edges[i].len;?
????}

????
out<<best<<endl;
}

int?main(int?argc,char?*argv[])
{
????solve();?
????
return?0;
}


Fence Loops

The fences that surround Farmer Brown's collection of pastures have gotten out of control. They are made up of straight segments from 1 through 200 feet long that join together only at their endpoints though sometimes more than two fences join together at a given endpoint. The result is a web of fences enclosing his pastures. Farmer Brown wants to start to straighten things out. In particular, he wants to know which of the pastures has the smallest perimeter.

Farmer Brown has numbered his fence segments from 1 to N (N = the total number of segments). He knows the following about each fence segment:

  • the length of the segment
  • the segments which connect to it at one end
  • the segments which connect to it at the other end.
Happily, no fence connects to itself.

Given a list of fence segments that represents a set of surrounded pastures, write a program to compute the smallest perimeter of any pasture. As an example, consider a pasture arrangement, with fences numbered 1 to 10 that looks like this one (the numbers are fence ID numbers):

           1
+---------------+
|\ /|
2| \7 / |
| \ / |
+---+ / |6
| 8 \ /10 |
3| \9 / |
| \ / |
+-------+-------+
4 5

The pasture with the smallest perimeter is the one that is enclosed by fence segments 2, 7, and 8.

PROGRAM NAME: fence6

INPUT FORMAT

Line 1: N (1 <= N <= 100)
Line 2..3*N+1:

N sets of three line records:

  • The first line of each record contains four integers: s, the segment number (1 <= s <= N); Ls, the length of the segment (1 <= Ls <= 255); N1s (1 <= N1s <= 8) the number of items on the subsequent line; and N2sthe number of items on the line after that (1 <= N2s <= 8).
  • The second line of the record contains N1 integers, each representing a connected line segment on one end of the fence.
  • The third line of the record contains N2 integers, each representing a connected line segment on the other end of the fence.

SAMPLE INPUT (file fence6.in)

10
1 16 2 2
2 7
10 6
2 3 2 2
1 7
8 3
3 3 2 1
8 2
4
4 8 1 3
3
9 10 5
5 8 3 1
9 10 4
6
6 6 1 2
5
1 10
7 5 2 2
1 2
8 9
8 4 2 2
2 3
7 9
9 5 2 3
7 8
4 5 10
10 10 2 3
1 6
4 9 5

OUTPUT FORMAT

The output file should contain a single line with a single integer that represents the shortest surrounded perimeter.

SAMPLE OUTPUT (file fence6.out)

12




posted on 2009-07-17 14:26 YZY 閱讀(610) 評論(0)  編輯 收藏 引用 所屬分類: AlgorithmUSACO圖論

導(dǎo)航

<2009年6月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

統(tǒng)計

常用鏈接

留言簿(2)

隨筆分類

隨筆檔案

搜索

積分與排名

最新評論

閱讀排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲欧美激情一区二区| 国产精品电影观看| aaa亚洲精品一二三区| 美日韩免费视频| 欧美高清在线视频观看不卡| 欧美成人一区二区三区片免费| 美女主播视频一区| 韩国成人福利片在线播放| 国产亚洲精品一区二区| 在线观看欧美一区| 999在线观看精品免费不卡网站| 亚洲伦理在线观看| 亚洲欧美韩国| 美女免费视频一区| 日韩一级大片| 久久se精品一区精品二区| 免费观看30秒视频久久| 欧美日韩中文字幕在线| 国产在线精品成人一区二区三区| 亚洲欧洲日本专区| 欧美一级黄色网| 亚洲国产精品久久久| 夜夜嗨av一区二区三区四季av| 欧美有码在线观看视频| 欧美伦理影院| 在线观看欧美一区| 欧美一区二区三区免费看| 亚洲国产91色在线| 欧美在线视频网站| 国产精品www994| 亚洲精品美女91| 久久全国免费视频| 亚洲夜间福利| 欧美日韩高清在线播放| 亚洲电影在线看| 久久精品99久久香蕉国产色戒| 99精品久久久| 欧美精品在线免费观看| 激情懂色av一区av二区av| 午夜精品一区二区三区四区 | 亚洲大片在线观看| 午夜欧美精品| 亚洲深夜影院| 欧美视频免费在线| 国产精品99久久久久久久vr| 欧美激情第二页| 老牛国产精品一区的观看方式| 国产欧美一区二区精品秋霞影院| 亚洲深夜福利| 亚洲美女av网站| 欧美日韩国产欧| 亚洲免费不卡| 亚洲精品小视频| 欧美日本一区二区高清播放视频| 最新国产成人av网站网址麻豆 | 欧美3dxxxxhd| 久久久久.com| 亚洲黄色性网站| 欧美jizz19hd性欧美| 久久久久成人精品| 狠狠色伊人亚洲综合网站色| 亚洲欧美另类国产| 亚洲欧美日韩中文视频| 国产欧美一区二区精品性 | 国产精品一区视频| 亚洲欧美日韩国产一区二区三区| 亚洲精品在线视频| 欧美图区在线视频| 亚洲免费婷婷| 性欧美暴力猛交另类hd| 狠狠操狠狠色综合网| 美日韩精品免费| 欧美激情一区| 午夜精品婷婷| 久久九九热re6这里有精品| 在线播放日韩专区| 亚洲欧洲三级| 国产精品一区二区久久精品| 久久久一区二区| 欧美国产专区| 午夜激情久久久| 久久国产视频网| 夜夜狂射影院欧美极品| 亚洲午夜精品视频| 一区二区在线看| 99re热精品| 激情久久五月| 日韩亚洲不卡在线| 国产专区一区| 日韩一区二区精品视频| 国产亚洲视频在线观看| 欧美激情一区二区三区在线视频 | 欧美一级二级三级蜜桃| 久久综合影视| 性色一区二区| 欧美 日韩 国产在线| 午夜精品999| 欧美多人爱爱视频网站| 午夜精品久久久久久99热| 久久综合狠狠综合久久综合88| 亚洲伊人网站| 免费在线观看一区二区| 欧美专区第一页| 欧美视频中文字幕在线| 麻豆国产精品va在线观看不卡| 欧美日韩国产首页在线观看| 老鸭窝亚洲一区二区三区| 国产精品日韩久久久| 亚洲六月丁香色婷婷综合久久| 国产亚洲a∨片在线观看| 99国产精品久久久| 日韩视频精品在线| 久久免费国产| 久久久久国产精品一区二区| 欧美午夜一区二区福利视频| 亚洲高清在线| 亚洲人成网站精品片在线观看 | 老司机aⅴ在线精品导航| 性欧美暴力猛交另类hd| 欧美日韩一区二区国产| 亚洲高清久久| 亚洲国产美女| 六月天综合网| 亚洲国产电影| 久久国产天堂福利天堂| 性久久久久久久| 国产精品v日韩精品v欧美精品网站| 亚洲大胆在线| 亚洲欧洲视频| 欧美高清在线一区| 亚洲精品国久久99热| 亚洲欧洲在线播放| 免费精品视频| 亚洲国产人成综合网站| 亚洲精品国产欧美| 欧美α欧美αv大片| 欧美激情亚洲精品| 亚洲精品资源| 欧美激情黄色片| 99pao成人国产永久免费视频| 在线性视频日韩欧美| 欧美午夜精品久久久久久超碰| 99精品国产高清一区二区| 亚洲综合日本| 国产一区二区高清| 久久夜色精品| 亚洲老司机av| 欧美在线观看你懂的| 韩国精品久久久999| 美女精品自拍一二三四| 亚洲精品国产精品国自产在线| 在线性视频日韩欧美| 国产农村妇女精品| 老牛嫩草一区二区三区日本| 亚洲欧洲精品一区二区精品久久久 | 国语精品中文字幕| 狼狼综合久久久久综合网| 亚洲二区精品| 制服丝袜激情欧洲亚洲| 国产精品欧美激情| 久久久午夜精品| 亚洲欧洲精品一区二区精品久久久| 一二美女精品欧洲| 国内精品久久久久影院色| 男人的天堂亚洲在线| 一区二区三区产品免费精品久久75| 久久成人精品一区二区三区| 在线看一区二区| 欧美午夜电影一区| 久久久久国产一区二区三区四区| 亚洲欧洲日本在线| 久久久久久久久久久久久久一区 | 中文网丁香综合网| 黄色另类av| 欧美性天天影院| 久久综合狠狠综合久久综青草 | 欧美日韩国产成人在线观看| 亚洲综合日韩在线| 亚洲国产精品综合| 久久精品人人做人人爽电影蜜月| 亚洲日韩欧美视频| 国产一区二区高清| 国产精品大片wwwwww| 美女主播视频一区| 欧美亚洲午夜视频在线观看| 亚洲人久久久| **网站欧美大片在线观看| 国产精品a级| 久热国产精品| 欧美在线播放高清精品| 99在线精品视频在线观看| 免费看黄裸体一级大秀欧美| 亚洲欧美国内爽妇网| 亚洲天堂黄色| 99精品99| 亚洲毛片在线| 亚洲九九九在线观看| 在线成人av.com| 国产综合久久久久久| 国产精品性做久久久久久|