国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

BZOJ3060: [Poi2012]Tour de Byteotia

2019-11-06 06:24:38
字體:
來源:轉載
供稿:網友

最小生成樹,兩節點編號都>k的直接連邊,否則累計不滿足這種情況的邊的數量len,對這些邊建生成樹,這len條邊中不在生成樹上的邊就是最少要刪去的邊 (證明的話因為如果成環了那無論刪那條邊都是一樣的吧..我是這樣理解的)


code:

#include<map>#include<set>#include<deque>#include<queue>#include<stack>#include<cmath>#include<ctime>#include<bitset>#include<string>#include<vector>#include<cstdio>#include<cstdlib>#include<cstring>#include<climits>#include<complex>#include<iostream>#include<algorithm>#define ll long longusing namespace std;void read(int &x){ char c; while(!((c=getchar())>='0'&&c<='9')); x=c-'0'; while((c=getchar())>='0'&&c<='9') x=(x<<3)+(x<<1)+c-'0';}void up(int &x,int y){if(x<y)x=y;}const int maxn = 1100000;const int maxm = 2100000;int fa[maxn],n,m,k;int find_(int x){ if(fa[x]==x) return x; return fa[x]=find_(fa[x]);}int d[maxm][2],len;int main(){ read(n); read(m); read(k); for(int i=1;i<=n;i++) fa[i]=i; for(int i=1;i<=m;i++) { int x,y; read(x); read(y); if(x>k&&y>k) fa[find_(x)]=find_(y); else len++,d[len][0]=x,d[len][1]=y; } int s=0; for(int i=1;i<=len;i++) { int x=d[i][0],y=d[i][1]; int f1=find_(x), f2=find_(y); if(f1!=f2) fa[f1]=f2,s++; }
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 尼木县| 山东省| 河源市| 越西县| 哈密市| 龙陵县| 曲阜市| 乌拉特中旗| 阿尔山市| 嘉兴市| 都江堰市| 遂川县| 嵩明县| 昌图县| 满城县| 涞水县| 天门市| 大足县| 济宁市| 出国| 银川市| 大名县| 南澳县| 凤山县| 绥棱县| 无棣县| 贡嘎县| 宝应县| 吴江市| 沾化县| 芦溪县| 全南县| 苏尼特左旗| 夏河县| 大丰市| 大邑县| 黔东| 高安市| 革吉县| 华安县| 巴南区|