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

USACO 4.1 Fence Loops


???? 這題是求無向圖中的一個最小環(huán)的長度。
???? 主要思路是:因為邊都是直線,邊的兩點之間的最短距離必然是這個邊長。那么,再求一條到兩頂點的最短距徑,這個路徑與邊構成了一個環(huán)。這個環(huán)是包含該邊的最小環(huán)。枚舉一下所有邊,計算出最小環(huán)即可。對于每個邊,刪除該邊,然后計算兩頂點的最短路徑,再恢復該邊。
???? 但是這個圖的輸入是用邊表示的,一個難點就是將其轉換成用點表示。這里用邊的集合來表示一個點。然后用map<set<int>,int>來存儲某一邊對應的邊的編號。每找到一個新的頂點則分配一個新的編號。這部分主要通過函數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;
??????????????}
????????}
????????
//沒有新加結點了
????????
????????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 閱讀(621) 評論(0)  編輯 收藏 引用 所屬分類: AlgorithmUSACO圖論

導航

<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

統(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>
            欧美黄色aa电影| 欧美日韩国产成人在线| 欧美日韩在线另类| 精品99一区二区| 久久久久久久久久久久久女国产乱| 亚洲免费视频在线观看| 欧美日韩国产免费观看| 日韩视频不卡中文| 美女脱光内衣内裤视频久久影院 | 尤物视频一区二区| 午夜精品理论片| 亚洲一区二区三区视频| 国产精品福利片| 亚洲欧美日韩国产中文在线| 亚洲午夜影视影院在线观看| 国产精品自在在线| 亚洲欧美日本国产有色| 亚洲欧美在线播放| 国产精品综合网站| 欧美一区二区三区在线| 欧美在线地址| 亚洲国产精品一区二区第一页 | 日韩视频不卡中文| 欧美激情一区二区三区成人| 欧美日韩一二三区| 亚洲午夜未删减在线观看| 一区二区三区成人| 国产精品国产三级国产普通话99 | 久久婷婷综合激情| 欧美一区二区三区婷婷月色 | 狠色狠色综合久久| 美女爽到呻吟久久久久| 欧美男人的天堂| 欧美一区1区三区3区公司| 久久久久国产精品一区三寸| 亚洲视频成人| 久久成人羞羞网站| 亚洲国产成人精品久久| 日韩视频免费观看| 国产精品一区免费观看| 欧美大成色www永久网站婷| 欧美日韩三级一区二区| 欧美在线观看一区| 久久精品99国产精品| 日韩亚洲欧美在线观看| 亚洲欧美另类中文字幕| 亚洲日本va午夜在线电影| 亚洲一区二区三区四区在线观看 | 久久精品网址| 欧美激情精品久久久| 欧美亚洲在线播放| 久久疯狂做爰流白浆xx| 亚洲在线中文字幕| 久久国产色av| 亚洲欧美一区二区三区极速播放| 免费在线亚洲欧美| 亚洲香蕉网站| 欧美电影在线| 美女诱惑一区| 国产亚洲欧洲| 中国av一区| 一区二区三区四区五区精品| 久久中文字幕一区| 亚洲午夜久久久久久久久电影院| 欧美激情一二三区| 久久国产精品久久久久久电车| 欧美视频在线不卡| 欧美不卡在线视频| 国产精品国产三级国产| 日韩视频在线免费观看| 亚洲精品免费在线观看| 牛牛国产精品| 欧美成人中文| ●精品国产综合乱码久久久久| 久久久噜噜噜久久人人看| 久久国产精品99国产| 国产美女扒开尿口久久久| 亚洲午夜小视频| 午夜激情久久久| 国产精品久久久久影院色老大 | 亚洲伦理一区| 一区二区欧美精品| 久久久久久日产精品| 久久综合亚州| 尤物九九久久国产精品的特点 | 久久久蜜臀国产一区二区| 久久gogo国模啪啪人体图| 国产精品欧美久久| 亚洲精品护士| 一本色道久久综合亚洲精品不| 欧美日韩在线播放三区四区| 亚洲欧美乱综合| 久久久噜噜噜| 亚洲成人在线观看视频| 麻豆国产精品va在线观看不卡| 亚洲精品乱码视频| 亚洲精品一区二区三区99| 欧美日韩国产在线观看| 亚洲伊人第一页| 久久久精品性| 亚洲欧洲一区二区三区久久| 欧美私人啪啪vps| 亚洲欧美视频一区二区三区| 久久综合久久综合久久综合| 亚洲美女少妇无套啪啪呻吟| 国产精品爽黄69| 久久aⅴ国产紧身牛仔裤| 欧美丰满少妇xxxbbb| 一区二区av| 国产精品视频大全| 欧美伊人久久久久久久久影院| 亚洲高清视频在线| 夜夜嗨网站十八久久| 国产欧美一区二区三区久久人妖 | 老司机免费视频一区二区三区| 亚洲免费久久| 久久se精品一区二区| 亚洲国语精品自产拍在线观看| 国产精品家教| 久久人人爽人人爽爽久久| 99热在这里有精品免费| 久久米奇亚洲| 亚洲网站在线看| 精品动漫一区| 欧美视频专区一二在线观看| 美国成人直播| 欧美一区二视频在线免费观看| 夜夜嗨av一区二区三区四季av| 亚洲电影下载| 久久精品主播| 亚洲视频一起| 亚洲国产欧洲综合997久久| 国产日韩欧美三区| 美女国产精品| 欧美中文在线观看| 亚洲精选视频免费看| 另类酷文…触手系列精品集v1小说| 亚洲欧美日韩人成在线播放| 一区二区三区欧美日韩| 亚洲成在线观看| 国产视频一区在线观看一区免费| 国产精品video| 欧美精品在欧美一区二区少妇| 另类专区欧美制服同性| 新狼窝色av性久久久久久| 一区二区三区久久精品| 亚洲人成在线免费观看| 欧美成人综合| 欧美jizz19hd性欧美| 久久久久国产精品人| 香蕉久久精品日日躁夜夜躁| 亚洲综合第一页| 亚洲天堂免费观看| 亚洲国产一区二区三区高清 | 国产日韩欧美二区| 欧美区视频在线观看| 欧美黄在线观看| 欧美精品久久天天躁| 欧美激情第五页| 欧美激情一区二区久久久| 欧美激情欧美狂野欧美精品| 欧美日韩一区在线观看| 欧美色大人视频| 国产精品成人aaaaa网站 | 亚洲免费高清| 亚洲狼人精品一区二区三区| 在线视频一区二区| 最新国产乱人伦偷精品免费网站 | 久久免费国产精品| 欧美尤物一区| 噜噜噜91成人网| 欧美国产丝袜视频| 麻豆精品91| 亚洲国产导航| 亚洲精品中文字幕在线观看| 亚洲网站在线观看| 一区二区三区高清在线| 亚洲综合色视频| 久久精品免费| 欧美大片网址| 国产精品成人一区二区艾草| 国产一区二区三区视频在线观看 | 亚洲激情女人| 一区二区三区国产| 一区二区三区久久精品| 性高湖久久久久久久久| 久久综合久久88| 亚洲三级电影全部在线观看高清| 亚洲欧美另类在线| 性8sex亚洲区入口| 久久久亚洲精品一区二区三区 | 国产午夜精品久久| 国产三级精品三级| 国产一区久久| 9l国产精品久久久久麻豆| 欧美影院精品一区| 女生裸体视频一区二区三区| 中文高清一区| 裸体一区二区三区| 欧美日韩国产综合在线|