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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[NOIP2003]传染病控制题解

發(fā)布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [NOIP2003]传染病控制题解 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目鏈接:...

思路:

優(yōu)化搜索順序,用DFS按照bfs的思想,從每一層開始搜索,枚舉刪邊。

對于分層,dfs預(yù)處理一下就好了。

代碼:

#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #define R register #define ll long long int using namespace std; const int N=1015; struct E{int nxt,to; }e[N]; int n,p,num,ans=0x3f3f3f3f,shen,head[N],dep[N],ren[N][N],f[N],tim[N],flag[N]; inline void add(R int u,R int v){e[++num].nxt=head[u];e[num].to=v;head[u]=num; } inline void dfs1(R int pos,R int fa){dep[pos]=dep[fa]+1;shen=max(shen,dep[pos]);f[pos]=fa;ren[dep[pos]][++tim[dep[pos]]]=pos;//當(dāng)前深度 第幾個 是什么for(R int i=head[pos];i;i=e[i].nxt){R int v=e[i].to;if(v!=fa)dfs1(v,pos);} } inline int check(R int depth){for(R int j=1;j<=tim[depth];++j)if(flag[f[ren[depth][j]]])return 0;return 1; } inline void dfs(R int depth,R int tot){//深度 第幾個if(tot>=ans)return;if(check(depth)){ans=min(ans,tot);return;}for(R int j=1;j<=tim[depth];++j){if(flag[f[ren[depth][j]]]){flag[ren[depth][j]]=1;++tot;}}for(R int i=1;i<=tim[depth];++i){//枚舉刪邊if(flag[f[ren[depth][i]]]){flag[ren[depth][i]]=0;--tot;dfs(depth+1,tot);flag[ren[depth][i]]=1;++tot;}}for(R int j=1;j<=tim[depth];++j)if(flag[f[ren[depth][j]]])flag[ren[depth][j]]=0; } int main(){scanf("%d%d",&n,&p);for(R int i=1;i<=p;++i){R int u,v;scanf("%d%d",&u,&v);add(u,v);add(v,u);}dfs1(1,0);flag[1]=1;dfs(2,1);if(ans==0x3f3f3f3f)printf("1");elseprintf("%d",ans);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/sky-zxz/p/9842747.html

總結(jié)

以上是生活随笔為你收集整理的[NOIP2003]传染病控制题解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。