COGS 1215. [Tyvj Aug11] 冗余電網
阿新 • • 發佈:2017-09-28
不能 接下來 tdi argc tar har return 數據 http
孤 島上共有N個村莊,發電站要建在第K個村莊中。S國的專家要在N個村莊間修建M條輸電線路,但由於地理原因,M條線路無法保證每個村莊都與第K個村莊(建 有發電站)直接相連,同樣,也不一定能保證每個村莊都與第K個村莊間接相連(假設A與B直接相連,B與C直接相連,那麽A與C間接相連)。
然而,由於S國的專家智商實在太“高”了,以至於設計出了許多冗余線路。現給出第i條線路兩個端點Ui,Vi(分別表示線路連接的兩個村莊,Ui!=Vi)和長度Li,請你幫島民算一下:如果電網可以覆蓋全島,最少需要多長的電線;若不能,有多少個村莊無電可用。
註意:0<=冗余線路數目<m;部分數據有重邊。電網可雙向導電。
接下來M行:Ui Vi Li
具體含義見題目描述
★ 輸入文件:ugrid.in
輸出文件:ugrid.out
簡單對比
時間限制:1 s 內存限制:128 MB
- TYVJ八月月賽提高組第2題
- 測試點數目:5
- 測試點分值:20
- --內存限制:128M
- --時間限制:1s
【題目描述】
北冰洋有一座孤島,多年來一直沒電。近日,令島民們振奮的消息傳來:S國的專家要為他們修建電網!!!
孤 島上共有N個村莊,發電站要建在第K個村莊中。S國的專家要在N個村莊間修建M條輸電線路,但由於地理原因,M條線路無法保證每個村莊都與第K個村莊(建 有發電站)直接相連,同樣,也不一定能保證每個村莊都與第K個村莊間接相連(假設A與B直接相連,B與C直接相連,那麽A與C間接相連)。
註意:0<=冗余線路數目<m;部分數據有重邊。電網可雙向導電。
【輸入格式】
第一行:N M K
接下來M行:Ui Vi Li
具體含義見題目描述
【輸出格式】
如果電網可以覆蓋全島,輸出最少需要的電線長度;
若不能,輸出無電可用的村莊的個數。
【樣例輸入】
【樣例1】 5 5 1 1 2 1 2 3 1 3 4 1 4 5 1 5 1 1 【樣例2】 5 5 1 1 2 1 1 2 2 1 2 3 3 4 1 5 4 2
【樣例輸出】
【樣例1】 4 【樣例2】 3
【提示】
樣例解釋:
對於樣例一,電網可以覆蓋全島,最短長度為4;
對於樣例二,電網無法覆蓋3,4,5這3個村莊。
數據範圍:
對於20%的數據,有1<m,n<=10;
對於60%的數據,有1<m,n<=1000;
對於100%的數據,有1<m,n<=200000,0<li<=1e+7;
對於40%的數據,電網無法覆蓋全島。
【來源】
From tbcaaa8 http://www.tyvj.cn/Problem_Show.aspx?id=1591
kruskal
(rank1 蛤蛤)
屠龍寶刀點擊就送
#include <algorithm> #include <cstdio> #define N 200005 using namespace std; struct Edge { int x,y,z; bool operator<(Edge a)const { return z<a.z; } }e[N]; int n,m,k,cnt,fa[N]; int find_(int x) {return fa[x]==x?x:fa[x]=find_(fa[x]);} int Main() { freopen("ugrid.in","r",stdin); freopen("ugrid.out","w",stdout); scanf("%d%d%d",&n,&m,&k); for(int i=1;i<=n;++i) fa[i]=i; for(int x,y,z;m--;) { scanf("%d%d%d",&x,&y,&z); e[++cnt]=(Edge){x,y,z}; } sort(e+1,e+1+cnt); int num=0; long long sum=0; for(int i=1;i<=cnt;++i) { int fx=find_(e[i].x),fy=find_(e[i].y); if(fx==fy) continue; fa[fy]=fx; num++; sum+=(long long)e[i].z; if(num==n-1) break; } num=0,k=find_(k); for(int i=1;i<=n;++i) if(find_(i)!=k) num++; if(num) printf("%d\n",num); else printf("%lld\n",sum); return 0; } int sb=Main(); int main(int argc,char *argv[]){;}
COGS 1215. [Tyvj Aug11] 冗余電網