bzoj4238: 电压
来源:互联网 发布:有关道士的网络电影 编辑:程序博客网 时间:2024/05/02 02:57
依题意:对电阻X,若可以选择使X不流过电流,当且仅当所有奇环都包含X且所有偶环都不包含X。
利用Dfs搜索树,如果点a搜到的边的端点b已经走过,说明点b为a的祖先,利用深度差可求得环上点的个数。
#include<iostream>#include<cstdio>#define N 100005#define M 400005using namespace std;int n,m,l=1,Ans,tot[2],tmp;bool vis[N];int fa[N],first[N],next[M],to[M],sum[N][2],dep[N];inline int read(){char c=getchar();int x=0;while(c<'0'||c>'9')c=getchar();while(c>='0'&&c<='9')x=x*10+c-'0',c=getchar();return x;}inline void link(int x,int y){to[++l]=y;next[l]=first[x];first[x]=l;to[++l]=x;next[l]=first[y];first[y]=l;}void Dfs(int t){vis[t]=1;for(int i=first[t];i;i=next[i])if ( (i^1)!=fa[t] ){if (vis[to[i]]){if (dep[to[i]]>dep[t])continue;tmp=(dep[t]-dep[to[i]])&1;sum[t][tmp]++;sum[to[i]][tmp]--;tot[tmp]++;}else{fa[to[i]]=i;dep[to[i]]=dep[t]+1;Dfs(to[i]);sum[t][0]+=sum[to[i]][0];sum[t][1]+=sum[to[i]][1];}}}int main(){n=read();m=read();for(int i=1;i<=m;i++)link(read(),read());for (int i=1;i<=n;i++)if(!vis[i]) Dfs(i);for (int i=1;i<=n;i++)if (sum[i][0]==tot[0]&&!sum[i][1]&&fa[i]) Ans++;if (tot[0]==1)Ans++;printf("%d\n",Ans);return 0;}
0 0
- bzoj4238: 电压
- BZOJ4238: 电压
- 电压
- 额定电压
- 电压不够?
- 人体电压
- 网线电压
- 电压测量
- 电压偏移
- 电压波动
- 手机电池电压
- 失调电压
- lvds电压
- 低电压控制高电压
- CPU的工作电压(核心电压,I/O电压)
- 三极管发射极电压跟随基极电压特性
- 共模电压和差模电压
- android 开路电压和闭路电压
- Hadoop格式化namenode失败
- 使用curl和wget模拟REST请求
- Android集成百度地图SDK
- JS中的phototype浅谈
- 文本框相关样式设置
- bzoj4238: 电压
- Android 自定义 dialog
- runLoop
- javascript中new Date()的浏览器兼容性问题解决方案
- 使用curl指令測試REST服務
- C#读取xml文件
- android权限
- 针对IE的条件注释
- http://www.cnblogs.com/hnrainll/archive/2011/12/29/2305582.html