poj2253 Frogger(最短路變型或者最小生成樹)

  1 /*
  2    題意:就是源點到終點有多條的路徑,每一條路徑中都有一段最大的距離!
  3     求這些路徑中最大距離的最小值!
  4     
  5    Dijkstra, Floyd, spfa都是可以的!只不過是將松弛的條件變一下就行了!
  6 
  7    想了一下,這道題用最小生成樹做也可以啊,圖總是連通的嘛!所以建一棵最小
  8    生成樹,然后dfs一下,從源點1,到終點2的路徑上,查找邊長最大的路徑! 
  9    附上代碼..... 
 10 */
 11 #include<iostream>
 12 #include<cstdio>
 13 #include<algorithm>
 14 #include<cstring>
 15 #include<cmath>
 16 #include<iomanip>
 17 #define INF 0x3f3f3f3f*1.0
 18 using namespace std;
 19 struct node{
 20     double x, y;       
 21 };
 22 node nd[205];
 23 double g[205][205];
 24 double d[205];
 25 int vis[205];
 26 int n;
 27 
 28 void Dijkstra(){ 
 29    memset(vis, 0, sizeof(vis));
 30    d[1]=0.0;
 31    int root=1;
 32    vis[1]=1;
 33    for(int i=2; i<=n; ++i)
 34       d[i]=INF;
 35    for(int j=1; j<n; ++j){
 36        int p;
 37        double minL=INF;
 38        for(int i=1; i<=n; ++i){
 39           double dist;
 40           if(!vis[i] && d[i]> (dist=max(d[root], g[root][i])))
 41               d[i]=dist;
 42           if(!vis[i] && minL>d[i]){
 43               minL=d[i];
 44               p=i;           
 45           }
 46        }
 47        if(minL==INF) return;
 48        root=p;
 49        vis[root]=1;
 50    }
 51 }
 52 
 53 int main(){
 54    int cnt=0;
 55    while(cin>>n && n){
 56        for(int i=1; i<=n; ++i)
 57           for(int j=1; j<=n; ++j)
 58              g[i][j]=INF;
 59        for(int i=1; i<=n; ++i){
 60           double u, v;
 61           cin>>nd[i].x>>nd[i].y;
 62           for(int j=1; j<i; ++j){
 63              u=nd[i].x-nd[j].x;        
 64              v=nd[i].y-nd[j].y;
 65              g[i][j]=g[j][i]=sqrt(u*u + v*v);
 66           }        
 67        }
 68        Dijkstra();
 69        cout<<"Scenario #"<<++cnt<<endl<<"Frog Distance = ";
 70        cout<<fixed<<setprecision(3)<<d[2]<<endl;
 71        cout<<endl;
 72    }
 73    return 0;    
 74 }
 75 
 76 //最小生成樹思想
 77 #include<iostream>
 78 #include<cstdio>
 79 #include<algorithm>
 80 #include<cstring>
 81 #include<cmath>
 82 #include<iomanip>
 83 #define INF 0x3f3f3f3f*1.0
 84 using namespace std;
 85 struct node{
 86     double x, y;     
 87 };
 88 node nd[205];
 89 
 90 struct EDGE{
 91    int u, v;
 92    double dist;       
 93 };
 94 EDGE edge[21000];
 95 
 96 bool cmp(EDGE a, EDGE b){
 97    return a.dist < b.dist;     
 98 }
 99 
100 double g[205][205];
101 
102 int vis[205], f[205];
103 int n;
104 
105 int getFather(int x){
106    return x==f[x] ? x : f[x]=getFather(f[x]);    
107 }
108 
109 bool Union(int a, int b){
110      int fa=getFather(a), fb=getFather(b);
111      if(fa!=fb){
112          f[fa]=fb;
113          return true;           
114      } 
115      return false;
116 }
117 double dd;
118 bool dfs(int cur, double ddd){
119     vis[cur]=1;
120     if(cur==2){
121        dd=ddd;
122        return true;           
123     }
124     for(int i=1; i<=n; ++i)
125        if(g[cur][i]!=INF && !vis[i]){
126             if(ddd<g[cur][i]){
127                if(dfs(i, g[cur][i]))  return true;
128             }
129             else if(dfs(i, ddd)) return true;           
130        } 
131     return false;    
132 }
133 
134 int main(){
135    int cnt=0;
136    while(cin>>n && n){
137        for(int i=1; i<=n; ++i)
138           for(int j=1; j<=n; ++j)
139              g[i][j]=INF;
140        int count=0;
141        for(int i=1; i<=n; ++i){
142           double u, v;
143           cin>>nd[i].x>>nd[i].y;
144           for(int j=1; j<i; ++j){
145              u=nd[i].x-nd[j].x;        
146              v=nd[i].y-nd[j].y;
147              edge[count].u=i;
148              edge[count].v=j;
149              edge[count++].dist=sqrt(u*u + v*v);
150           }        
151        }
152        sort(edge, edge+count, cmp);
153        for(int i=1; i<=n; ++i)
154           f[i]=i;
155        for(int i=0; i<count; ++i){
156            int u, v;
157            if(Union(u=edge[i].u, v=edge[i].v))
158               g[u][v]=g[v][u]=edge[i].dist;        
159        }
160        memset(vis, 0, sizeof(vis));
161        dfs(1, 0.0);
162        cout<<"Scenario #"<<++cnt<<endl<<"Frog Distance = ";
163        cout<<fixed<<setprecision(3)<<dd<<endl;
164        cout<<endl;
165    }
166    return 0;    
167 }

?

轉載于:https://www.cnblogs.com/hujunzheng/p/3915234.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/531749.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/531749.shtml
英文地址,請注明出處:http://en.pswp.cn/news/531749.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

python包mdure_Python hashlib模塊實例使用詳解

這篇文章主要介紹了Python hashlib模塊實例使用詳解,文中通過示例代碼介紹的非常詳細&#xff0c;對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下hashlib模塊主要的作用&#xff1a;加密保護消息安全&#xff0c;常用的加密算法如MD5&#xff0c;SHA1等。1、…

UVAoj 348 - Optimal Array Multiplication Sequence

1 /*2 題意&#xff1a;矩陣相乘的最少的步數3 dp[i][j]min(dp[i][j], dp[i][k]dp[k1][j]num[i-1]*num[k]*num[j]);4 表示的是第i個矩陣到第j個矩陣相乘的最少步數5 sign[i][j]表示的是第i個矩陣到第j個矩陣相乘的最少步數是由第i個矩陣到第sign[i][j]個矩陣相…

raft協議 MySQL 切換_Raft 協議實戰系列(二)—— 選主

注&#xff1a;本文原創&#xff0c;轉載請標明出處。歡迎轉發、關注微信公眾號&#xff1a;Q的博客。 不定期發送干貨&#xff0c;實踐經驗、系統總結、源碼解讀、技術原理。本文目的筆者期望通過系列文章幫助讀者深入理解Raft協議并能付諸于工程實踐中&#xff0c;同時解讀不…

codeforce Pashmak and Buses(dfs枚舉)

1 /*2 題意&#xff1a;n個同學&#xff0c;k個車&#xff0c; 取旅游d天&#xff01;3 要求所有的學生沒有兩個或者兩個以上的在同一輛車上共同帶d天&#xff01; 輸出可行的方案&#xff01;4 5 對于d行n列的矩陣&#xff0c;第i行第j列表示的是第i天第j個同學所…

怎樣用mysql查詢測試_如何測試數據庫查詢優化器

我一直認為&#xff0c;查詢優化器(Query Optimizer&#xff0c;后面簡稱優化器)一直是數據庫領域 Top 級別的 hardcore 技術&#xff0c;自己也一直嘗試去深入理解&#xff0c;但每每看到 TiDB 代碼里面那一大坨 plan 的代碼&#xff0c;我就望而生畏了&#xff0c;就像是『可…

poj2060Taxi Cab Scheme(二分圖匹配)

1 /*2 題意&#xff1a; 出租車 有一個出發的時間&#xff0c;從點&#xff08;a, b&#xff09;到點&#xff08;c, d&#xff09;&#xff0c;時間為3 abs(a-c)abs(b-d)! 一輛車可以在運完一個乘客后運另一個乘客, 4 條件是此車要在預約開始前一分鐘之前到達出發地,…

二級java考什么_計算機二級Java考試資料!

Where領&#xff1f;基本要求1 . 掌握 Java 語言的特點&#xff64;實現機制和體系結構&#xff61;2 . 掌握 Java 語言中面向對象的特性&#xff61;3 . 掌握 Java 語言提供的數據類型和結構&#xff61;4 . 掌握 Java 語言編程的基本技術&#xff61;5 . 會編寫 Java 用戶界面…

二分匹配最大匹配的理解(附圖解)

定義一個PXP的有向圖中&#xff0c;路徑覆蓋就是在圖中找一些路徑&#xff0c;使之覆蓋了圖中的所有頂點&#xff0c;且任何一個頂點有且只有一條路徑與之關聯&#xff1b;&#xff08;如果把這些路徑中的每條路徑從它的起始點走到它的終點&#xff0c;那么恰好可以經過圖中的每…

poj 2226 Muddy Fields(合理建圖+二分匹配)

1 /*2 題意&#xff1a;用木板蓋住泥濘的地方&#xff0c;不能蓋住草。木板任意長&#xff01;可以重疊覆蓋&#xff01; *表示泥濘的地方&#xff0c;.表示草&#xff01;3 思路&#xff1a;4 首先讓我們回憶一下HDU 2119 Matrix這一道題&#xff0c;一個矩陣…

java驗證碼工具_java 驗證碼工具

importjavax.imageio.ImageIO;import java.awt.*;importjava.awt.image.BufferedImage;importjava.io.IOException;importjava.io.OutputStream;importjava.util.Random;public classCaptchaUtils {private final static Object lock newObject();/*** 圖片的寬度。*/private …

Floyd算法的理解

轉載于:https://www.cnblogs.com/hujunzheng/p/3919226.html

http get post java_java發送http的get、post請求實現代碼

Http請求類package wzh.Http;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.List;import java.util.Map;public class HttpRe…

java string的作用_淺談java String不可變的好處

一、java內部String類的實現&#xff1a;java 8&#xff1a;public final class Stringimplements java.io.Serializable, Comparable, CharSequence {/** The value is used for character storage. */private final char value[];}java 9 及之后&#xff1a;(使用coder標識了…

34988 Happy Reversal(二進制去取反)

1 /*2 題意&#xff1a;給多個二進制數&#xff0c;對某些數進行按位取反操作&#xff01;3 然后從中找到最大數和最小數&#xff0c;并輸出他們的差值&#xff01; 4 注意&#xff1a;所有的數都是整數&#xff0c;包括取反之后5 6 思路&#xff1a;一個n為二進…

java vim ide_Vim配置Java IDE

首先安裝vim (當然做java 開發要裝jdk 這個就不說了)emerge -av vim (gentoo 系統上安裝vim 的命令,你可以用rpm ,apt-get )給vim 安裝 javacomplete 插件http://www.vim.org/scripts/script.php?script_id1785 這個插件的作用是實現一部分代碼提示功能 比如你輸入 System…

java中線程存活和線程執行的問題!

1 /*2 下面的程序會出現下面的情況&#xff0c;當Thread-0&#xff0c; Thread-1&#xff0c; Thread-2都被wait的時候&#xff0c;可能會同時蘇醒3 Thread-0 put4 Thread-1 put5 Thread-2 put6 Thread-3 get//在此處&#xff0c;Thread-3拿到鎖之后&#xff0…

java中多線程模擬(多生產,多消費,Lock實現同步鎖,替代synchronized同步代碼塊)...

import java.util.concurrent.locks.*; class DuckMsg{int size;//烤鴨的大小String id;//烤鴨的廠家和標號DuckMsg(){}DuckMsg(int size, String id){this.sizesize;this.idid;}public String toString(){return id " 大小為:" size;} } class Duck{private int …

java encode 空格_javaWeb中URLEncoder.encode空格問題

近期開發一個在線坐席的功能。發現推送的消息中空格變成了 。查詢發現URLEncoder.encode的問題。曾經用的時候也沒注意過&#xff0c;解決的方法網上是對URLEncoder.encode的之后的字符串進行替換號&#xff0c;這樣的方式假設真的有號那也被替換了。所以應該在URLEncoder.enco…

poj 1386 Play on Words(有向圖歐拉回路)

1 /*2 題意&#xff1a;單詞拼接&#xff0c;前一個單詞的末尾字母和后一個單詞的開頭字母相同3 思路&#xff1a;將一個單詞的開頭和末尾單詞分別做兩個點并建一條有向邊&#xff01;然后判斷是否存在歐拉回路或者歐拉路 4 5 再次強調有向圖歐拉路或歐拉回路的判定方法&…

java web tomcat 實例_Java Web應用開發實例

[1&#xff0e;GIS的概念 1&#xff0e;1什么是gis 地理信息系統 (GIS, Geographic Information System) 是一種基于計算機的工具&#xff0c;它可以對在地球上存在的東西和發生的事件進行成圖和分析。 GI上次提到了EclipseTomcatLomboz Java Web開發環境的配置&#xff0c;可環…