Network POJ
来源:互联网 发布:破解路由器限速软件 编辑:程序博客网 时间:2024/05/16 08:56
题目链接https://vjudge.net/contest/51670#problem/G
参考https://vjudge.net/solution/2578036和
1. 这个地方居然还能这样用并查集。挺好的处理联通分量的方式。。
2.
我的不知道为什么wa 的代码。。
#include<algorithm>#include<vector> #include<cstring>#include<string>#include<iomanip>#include<cstdio>#include<stack>#include<iostream>#include<map>#include<queue>#include<cmath>using namespace std;#define sf scanf#define pf printf#define mem(a,b) memset(a,b,sizeof(a));#define rep(i,a,b) for(int i=(a);i<=(b);++i)#define mod 9901#define N 100010#define M 100010#define ULL unsigned long long#define LL long long #define inf 0x3f3f3f3f//2017年08月16日09:50:57int fst[N],nxt[N<<2],vv[N<<2],tot,fa[N],dep[N];int pre[N],low[N],dfs_clock,pa[N];int ans;int Find(int x){ return x==fa[x]?x:fa[x]=Find(fa[x]);}void un(int u,int v){ u=Find(u),v=Find(v); if(pa[v]==-1||dep[pa[u]]>dep[pa[v]]){ fa[u]=v; } else fa[v]=u;}void add(int u,int v){ vv[tot]=v;nxt[tot]=fst[u];fst[u]=tot++;}void dfs(int u,int p){ pa[u]=p; pre[u]=low[u]=++dfs_clock; for(int i=fst[u];~i;i=nxt[i]){ int v=vv[i]; if(!pre[v]){ dep[v]=dep[u]+1; dfs(v,u); low[u]=min(low[u],low[v]); if(low[v]>pre[u])ans++; else un(u,v); } else if(v!=p){ low[u]=min(low[u],pre[v]); } }}void calc(int u,int v){ while(1){ if(dep[u]>dep[v]){ int x=pa[u]; x=Find(x); un(u,x); u=x; ans--; } else { int x=pa[v]; x=Find(x); un(x,v); v=x; ans--; } if(u==v)return ; }}int main(){ //freopen("in.txt","r",stdin); int n,m;int cas=0; while(~sf("%d%d",&n,&m)&&n+m){ pf("Case %d:\n",++cas); ans=0;dep[1]=0;dfs_clock=0;mem(pre,0); mem(fst,-1);tot=0; for(int i=1;i<=n;++i)fa[i]=i; rep(i,1,m){ int u,v;sf("%d%d",&u,&v); add(u,v);add(v,u); } dfs(1,-1); int q;sf("%d",&q); while(q--){ int u,v;sf("%d%d",&u,&v); calc(Find(u),Find(v)); pf("%d\n",ans); } puts(""); }}
阅读全文
0 0
- Network POJ
- Network POJ
- Network POJ
- POJ 1144 Network
- POJ 1459 Power Network
- poj 2236 Wireless Network
- POJ 2349 Arctic Network
- POJ 2570 Fiber Network
- POJ 1861 Network
- POJ 1459 Power Network
- POJ 3164 Command Network
- poj 2236 Wireless Network
- poj 2236 Wireless Network
- POJ 3694 Network
- poj 2531 Network Saboteur
- poj Network of Schools
- POJ 2236 Wireless Network
- poj 1861 Network
- android系统声音调节
- 【jzoj5285】【NOIP提高组模拟赛A组8.16】【排序】
- Android开发 Apk打包之后百度地图不显示的原因以及解决方法
- 设置wlan 和以太网 ip 的bat 脚本
- android 数字签名
- Network POJ
- Mybatis简单操作
- C# 调用 C dll char* callback 设置回调函数不定参数
- Thymeleaf
- java获取本机ip(排除虚拟机等一些ip)
- 初学python之基础详解(二)
- 个人笔记_EEPROM在微控STM32F1外设IIC控制下的操作细节总结
- UIImage 颜色渲染imageWithRenderingMode
- 转自:AlbertHongXS