日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LOJ洛谷P3225:矿场搭建(割点、点双)

發布時間:2023/12/3 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LOJ洛谷P3225:矿场搭建(割点、点双) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 解析
  • 代碼

解析

我的實現不夠簡潔,導致bug越調越謎…
關鍵就是**找被割點分開的分量的方法:dfs!!!
一下子就豁然開朗了

代碼

#include<bits/stdc++.h> using namespace std; #define ll long long const int N=2e3+100; const double eps=1e-6; inline ll read(){ll x=0,f=1;char c=getchar();while(!isdigit(c)){if(c=='-')f=-1;c=getchar();}while(isdigit(c)){x=(x<<1)+(x<<3)+c-'0';c=getchar();}return f*x; } int n,m; int ans; struct node{int to,nxt,from; }p[N<<1]; int fi[N],cnt; inline void addline(int x,int y){//printf("%d->%d w=%d\n",x,y,w);p[++cnt]=(node){y,fi[x],x};fi[x]=cnt; } int dfn[N],low[N],zhan[N],tim,top,cut[N],r,tot; void tarjan(int x){dfn[x]=low[x]=++tim;zhan[++top]=x;int nm=0;for(int i=fi[x];~i;i=p[i].nxt){int to=p[i].to;//printf("x=%d to=%d\n",x,to);if(!dfn[to]){++nm;tarjan(to);if(low[to]>=dfn[x]){cut[x]=1;}low[x]=min(low[x],low[to]);}else low[x]=min(low[x],dfn[to]);}if(x==r) cut[x]=nm>1; } int num,Cut,tag[N],t; bool vis[N]; void dfs(int x){if(vis[x]||tag[x]==t) return;num++;//printf("x=%d\n",x);if(cut[x]){tag[x]=t;Cut++;return;}vis[x]=1;for(int i=fi[x];~i;i=p[i].nxt){int to=p[i].to;dfs(to);} } int main(){#ifndef ONLINE_JUDGEfreopen("a.in","r",stdin);freopen("a.out","w",stdout);#endifint o=0;while(1){memset(fi,-1,sizeof(fi));cnt=-1;memset(vis,0,sizeof(vis));memset(dfn,0,sizeof(dfn));tim=0;top=0;memset(cut,0,sizeof(cut));memset(tag,0,sizeof(tag));m=read();n=0;if(!m) return 0;for(int i=1;i<=m;i++){int x=read(),y=read();addline(x,y);addline(y,x);n=max(n,max(x,y));}tot=n;for(int i=1;i<=n;i++){r=i;if(!dfn[i]) tarjan(i);}ll nm=0,ans=1;for(int i=1;i<=n;i++){//printf("i=%d cut=%d\n",i,cut[i]);if(!vis[i]&&!cut[i]){num=0;Cut=0;t=i;dfs(i);printf("i=%d num=%d Cut=%d\n",i,num,Cut);if(Cut==0){nm+=2;ans*=num*(num-1)/2;}else if(Cut==1){nm++;ans*=(num-1);}}}printf("Case %d: %lld %lld\n",++o,nm,ans);} } /* 4 1 2 2 3 1 3 3 4 */

總結

以上是生活随笔為你收集整理的LOJ洛谷P3225:矿场搭建(割点、点双)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 白石茉莉奈中文字幕在 | 一级黄色大片免费观看 | 欧美一区二区三区不卡视频 | 亚洲精品一 | 色播放 | 丰满大乳奶做爰ⅹxx视频 | 精品国产制服丝袜高跟 | 日韩欧美天堂 | 另类小说五月天 | 开心激情久久 | 欧美日韩一区二区三区国产精品成人 | 国内精品少妇 | 人人爱人人射 | 扒开伸进免费视频 | 国产妇女乱一性一交 | 欧美一级大片免费看 | 亚洲人在线观看 | 在线免费精品 | 国产精品一区二区三区免费看 | 中文字幕一区二区三区久久久 | 日日草天天干 | 国产精品666 | 久久久久久国产精品三级玉女聊斋 | 国产高清亚洲 | av视屏在线 | 国产高清视频在线免费观看 | 日韩成人片 | 爱爱短视频 | 国产经典av| 日韩熟女一区二区 | 欧美大片xxx | 久在线视频 | 总裁憋尿呻吟双腿大开憋尿 | 在线一区二区三区四区五区 | sese亚洲| 91九色偷拍 | 蜜臀av粉嫩av懂色av | 91九色论坛 | 欧美色第一页 | 成人免费看片视频 | 国产亚洲精品一区二区三区 | 日韩精品一区二区三区电影 | wwwxxxx在线观看 | 九九热在线观看 | 欧美狠狠 | chinese麻豆新拍video | 亚洲成人一区二区 | 蜜桃av色偷偷av老熟女 | 国产3区 | 国产精品久久久久久久蜜臀 | 久久精品视频3 | 中文字幕一区二区三区在线不卡 | 中文字幕第100页 | 久久久久人妻一道无码AV | 欧美在线观看一区二区三区 | 天堂资源在线观看 | 免费麻豆 | 成年人视频在线观看免费 | 国产亚洲在线 | 在线免费观看成年人视频 | 全部孕妇毛片丰满孕妇孕交 | 中文字幕一区二区三区免费视频 | 午夜国产在线观看 | 久久影视中文字幕 | 红桃视频成人 | 放荡的少妇2欧美版 | xxxx日本少妇 | 老牛嫩草二区三区观影体验 | 国产尤物视频在线观看 | 国产高清视频免费观看 | 四虎影院在线观看免费 | 国产精品久久一区二区三区动 | 番号动态图| 男人都懂的网站 | 在线免费看黄av | 在线亚洲欧美 | 日韩videos | 三级做爰第一次 | 日韩精品第三页 | 日本精品一区二区三区视频 | 91精品国产综合久久久蜜臀图片 | 天堂在线国产 | 亚洲狠狠干 | 久久色网 | 无码人妻精品一区二区中文 | 久久五月网| av中文字幕在线播放 | 成人欧美一区二区三区黑人动态图 | 国产精久久久久久 | 国产精品亚洲αv天堂无码 伊人性视频 | 97超碰在线免费 | 外国av在线| 91在线看| 日日操网 | 久久老司机精品视频 | 19韩国主播青草vip | 黄色中文 | 疯狂少妇 | 色综合中文网 |