HDU 1863 暢通工程(最小生成樹,prim)

?

?

題意:

  給出圖的邊和點數,要求最小生成樹的代價,注:有些點之間是不可達的,也就是可能有多個連通圖。比如4個點,2條邊:1-2,3-4。

?

思路:

  如果不能連通所有的點,就輸出‘?’。之前以為每個點只要有邊連著就一定能生成樹,其實還可以是每個點雖然有邊可達,但是給的其實是兩個圖,比如上例。其他按照常規Prim。

?

?

 1 #include <bits/stdc++.h>
 2 using namespace std;
 3 const int N=105;
 4 const int mod=0x7f7f7f7f;
 5 int v[N][N];    //
 6 int vis[N];
 7 int low[N];     //到每個點的最小權
 8 
 9 
10 int prim(int n)
11 {
12     int pos=vis[1]=1;   //從點1開始
13     for(int i=2; i<=n; i++)   low[i]=v[1][i]; //目前到每個點的最小權
14     int ans=0;
15     for(int i=1; i<n; i++)  //搞定另外n-1個點
16     {
17         int big=mod;
18         for(int j=2; j<=n; j++) //找權最小的邊
19         {
20             if(!vis[j] && low[j]<big )  //未瀏覽過,目前可達,權小
21             {
22                 pos=j;
23                 big=low[j];
24             }
25         }
26         if(big==mod)    return 0;   //無法到達。
27         ans+=big;
28         vis[pos]++; //瀏覽過
29         for( int j=2; j<=n; j++ )   //更新到每個點的權值
30             if(!vis[j] && v[pos][j]<mod && low[j]>v[pos][j] ) low[j]=v[pos][j];    //未瀏覽過,有路可達,更短
31     }
32     return ans;
33 }
34 
35 
36 
37 
38 int main()
39 {
40     freopen("input.txt", "r", stdin);
41     int n, m, a, b, t;
42     while(scanf("%d%d", &n, &m), n)
43     {
44 
45         memset(cnt,0,sizeof(cnt));
46         memset(vis,0,sizeof(vis));
47         memset(v,0x7f,sizeof(v));   //置為不可達
48 
49         for(int i=0; i<n; i++)
50         {
51             scanf("%d%d%d",&a,&b,&t);
52             v[a][b]=v[b][a]=t;
53         }
54         int ans=prim(m);
55         if(ans)    printf("%d\n",ans);
56         else  printf("?\n");
57     }
58     return 0;
59 }
AC代碼

?

轉載于:https://www.cnblogs.com/xcw0754/p/4608439.html

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

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

相關文章

2000年不算在21世紀

練習3-5 輸出閏年 (15 分) 輸出21世紀中截止某個年份以來的所有閏年年份。注意&#xff1a;閏年的判別條件是該年年份能被4整除但不能被100整除、或者能被400整除。 想當然地以為21世紀是2000~2099&#xff0c;當然沒有通過 if(N > 2000&&N < 2099){for(int i …

使用迭代器時如何避免ConcurrentModificationException

Java Collection類是快速失敗的&#xff0c;這意味著如果在使用迭代器遍歷某個線程的同時更改了Collection&#xff0c;則iterator.next&#xff08;&#xff09;將拋出ConcurrentModificationException 。 在多線程以及單線程環境下都可能出現這種情況。 讓我們通過以下示例探…

Sublime Text 3實用快捷鍵大全

下面是我通過網上教程和文本資料學習sublime Text3時收集的一些實用功能和常用快捷鍵&#xff0c;現在分享出來&#xff0c;如果還有其它的好用的功能可以在下面留言&#xff0c;以便互相學習和交流&#xff0c;謝謝&#xff01;。 選擇類 CtrlD 選中光標所占的文本&#xff0c…

Tomcat中配置JNDI數據源

準備工作&#xff1a; Tomcat版本&#xff1a;tomcat6.0以上 下例中均使用MySQL數據庫 將對應數據源的jar包和MySQL的驅動包拷貝至tomcat的lib文件夾下 一、全局數據源 1步驟一&#xff1a;配置 在tomcat下的conf/server.xml的GlobalNamingResources節點標簽中增加如下配置&…

練習3-8 查詢水果價格 (15 分)

練習3-8 查詢水果價格 (15 分) 給定四種水果&#xff0c;分別是蘋果&#xff08;apple&#xff09;、梨&#xff08;pear&#xff09;、桔子&#xff08;orange&#xff09;、葡萄&#xff08;grape&#xff09;&#xff0c;單價分別對應為3.00元/公斤、2.50元/公斤、4.10元/公…

JavaFX 2.0 beta示例應用程序和思考

我有一段時間回過頭來玩JavaFX&#xff0c;并且在使用該語言方面有好有壞的經驗。 隨著JavaFX 2.0 beta的發布&#xff0c;我想嘗試一下。 在這里&#xff0c;我開發了一個簡單的地址解析應用程序&#xff0c;該應用程序將使用Google地址編碼API來獲取地址并提供該位置的緯度-經…

$Android自定義控件在不同狀態下的屬性

在寫代碼的時候&#xff0c;有時候需要控件在不同狀態下顯示不同的外觀&#xff0c;比如在按鈕按下的時候要變顏色&#xff0c;EditText獲取焦點時候邊框要變顏色等。那么下面就來梳理一下這些是怎么實現的。 &#xff08;一&#xff09;按鈕按下時候變顏色 1、在項目的drawabl…

解析DBR操作系統引導記錄數據

理解文件系統。你必須要熟悉DBR&#xff0c;下面我們就來看看文件系統解析DBR數據。 Dos Boot Record(DBR)操作系統引導記錄是由操作系統的格式化程序建立的。在文件系統驅動操作不論什么一個磁盤卷時&#xff0c;這一部分的信息將被讀取并作為文件系統在這個磁盤卷上的參數被使…

簡單冒泡排序

將5個數字按從小到大排序。 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() {int x[5] {0},temp 0;for(int i 0;i<5;i){scanf("%d",&x[i]);}//冒泡排序&#xff08;升序&#xff09;for(int j 0;j<4;j)//n個…

YouTube Java API入門

在本教程中&#xff0c;我將介紹Google的YouTube API &#xff0c;該API可讓您使用YouTube的功能來啟用應用程序。 YouTube是“殺手級”互聯網應用程序之一&#xff0c;其流量占互聯網總流量的很大一部分。 在開始之前&#xff0c;請確保您已閱讀《 API概述指南》 。 我們將主…

mysql在mac上的坑

默認端口3306&#xff1f; 正確答案&#xff1a;3307 轉載于:https://www.cnblogs.com/dudream/p/5375551.html

ServletContext圖解

servlet之間共享數據資源&#xff01; 轉載于:https://www.cnblogs.com/felixzh/p/4615902.html

C語言怎么輸出百分號%

規律&#xff1a;printf函數中&#xff0c;當出現多個%時&#xff0c;由左至右&#xff0c;每兩個%結合輸出一個% #include <stdio.h> #include <stdlib.h> #include <math.h> int main() {int c 52;printf("% \n %% \n %%% \n %%%% \n %%%%% \n %%%%…

入侵Jasper以獲取JSP頁面的對象模型

為了對我的JSP進行一些檢查和統計分析&#xff0c;我需要一個包含在其中的元素的類似于DOM的層次模型。 但是&#xff0c;解析JSP頁面并不是一件容易的事&#xff0c;最好留給它一個出色的工具-Tomcat&#xff0c;Jetty&#xff0c;GlassFish以及其他所有工具都可以使用Jasper …

Linux自動化安裝cobbler

1介紹 1.1 PXE PXE技術與RPL技術不同之處為RPL是靜態路由&#xff0c;PXE是動態路由。RPL是根據網卡上的ID號加上其他記錄組成的一個Frame&#xff08;幀&#xff09;向服務器發出請求。而服務器中已有這個ID數據&#xff0c;匹配成功則進行遠程啟動。PXE則是根據服務器端收到的…

iOS9適配系列教程

https://github.com/ChenYilong/iOS9AdaptationTips 轉載于:https://www.cnblogs.com/zsw-1993/p/4879118.html

C語言形參

形參和實參區別 形參出現在函數定義中&#xff0c;在整個函數體內都可以使用&#xff0c;離開該函數則不能使用。實參出現在主調函數中&#xff0c;進入被調函數后&#xff0c;實參變量也不能使用。 形參和實參的功能是作數據傳送。發生函數調用時&#xff0c;主調函數把實參…

避免延遲的JPA集合

Hibernate&#xff08;實際上是JPA&#xff09;具有集合映射&#xff1a; OneToMany&#xff0c; ManyToMany&#xff0c; ElementCollection。 所有這些默認情況下都是惰性的。 這意味著集合是List或Set接口的特定實現&#xff0c;其中包含對持久會話的引用&#xff0c;并且只…

2016年,我的和自己談談

2016年過去三分之一了&#xff0c;現在談規劃晚點但總比沒想法強。想了半天還是從這個方面著手吧&#xff1a; 一.升級改造自己的辦公學習環境&#xff1a; 給自己的電腦加內存&#xff0c;加SSD&#xff0c;再添置一個顯示器&#xff0c;換上心儀已久的cherry青軸鍵盤&#xf…

C語言的四舍五入實現

習題3-2 高速公路超速處罰 (15 分) 按照規定&#xff0c;在高速公路上行使的機動車&#xff0c;達到或超出本車道限速的10%則處200元罰款&#xff1b;若達到或超出50%&#xff0c;就要吊銷駕駛證。請編寫程序根據車速和限速自動判別對該機動車的處理。 輸入格式: 輸入在一行中…