【洛谷 2330】繁忙的都市
生活随笔
收集整理的這篇文章主要介紹了
【洛谷 2330】繁忙的都市
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
城市C是一個非常繁忙的大都市,城市中的道路十分的擁擠,于是市長決定對其中的道路進行改造。城市C的道路是這樣分布的:城市中有n個交叉路口,有些交叉路口之間有道路相連,兩個交叉路口之間最多有一條道路相連接。這些道路是雙向的,且把所有的交叉路口直接或間接的連接起來了。每條道路都有一個分值,分值越小表示這個道路越繁忙,越需要進行改造。但是市政府的資金有限,市長希望進行改造的道路越少越好,于是他提出下面的要求:
1.改造的那些道路能夠把所有的交叉路口直接或間接的連通起來。 2.在滿足要求1的情況下,改造的道路盡量少。 3.在滿足要求1、2的情況下,改造的那些道路中分值最大的道路分值盡量小。
任務:作為市規劃局的你,應當作出最佳的決策,選擇那些道路應當被修建。
輸入格式
第一行有兩個整數n,m表示城市有n個交叉路口,m條道路。
接下來m行是對每條道路的描述,u, v, c表示交叉路口u和v之間有道路相連,分值為c。(1≤n≤300,1≤c≤10000,1≤m≤100000)
輸出格式
兩個整數s, max,表示你選出了幾條道路,分值最大的那條道路的分值是多少。
輸入輸出樣例
輸入 #1復制 4 5 1 2 3 1 4 5 2 4 7 2 3 6 3 4 8 輸出 #1復制 3 6題解:愛思kruskal,prim都沒怎么用hhh,幾乎是裸題啊! #include<iostream> #include<algorithm> #include<queue> #include<cmath> #include<cstring> #include<cstdlib> #include<cstdio> using namespace std; typedef double db; const int N=2005; int n,m,cp,tot,fa[N],b[N];struct node{int x,y; }a[N];struct YCLL{int u,v;int va; }e[N];int ans=0;bool cmp(YCLL aa,YCLL bb){return aa.va<bb.va; }int find(int x){if(x!=fa[x]) fa[x]=find(fa[x]);return fa[x]; } int main(){freopen("2330.in","r",stdin);freopen("2330.out","w",stdout);scanf("%d",&n); scanf("%d",&m);for(int i=1;i<=n;i++) fa[i]=i;for(int i=1;i<=m;i++)scanf("%d %d %d",&e[i].u,&e[i].v,&e[i].va);sort(e+1,e+m+1,cmp);for(int i=1;i<=m;i++){int uu=find(e[i].u);int vv=find(e[i].v);if(uu==vv) continue;ans=e[i].va; fa[uu]=vv; tot++;if(tot==(n-1)) break;}printf("%d %d",n-1,ans);return 0; }
?
轉載于:https://www.cnblogs.com/wuhu-JJJ/p/11291446.html
總結
以上是生活随笔為你收集整理的【洛谷 2330】繁忙的都市的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: redis小功能大用处-bitmaps
- 下一篇: `MediaDevices.getUse