2017蓝桥杯模拟题 风险度量(暴力枚举)
2017-04-06 18:04
281 查看
思路:由于数据范围比较小,所以直接枚举每一个点是否为关键点即可
代码:
#include<stdio.h> #define maxn 2000+10 int pre[maxn],u[maxn],v[maxn]; int n,m,x,y; void init() { for(int i=1; i<=n; ++i) pre[i]=i; } int Find(int x) { if(x==pre[x]) return x; pre[x]=Find(pre[x]); return pre[x]; } int linked() { for(int i=0; i<m; ++i) { int fx=Find(u[i]),fy=Find(v[i]); if(fx!=fy) pre[fx]=fy; } int fx=Find(x),fy=Find(y); if(fx==fy) return 1; return 0; } int main() { scanf("%d%d",&n,&m); for(int i=0; i<m; ++i) scanf("%d%d",&u[i],&v[i]); scanf("%d%d",&x,&y); if(!linked())//检查是否连通,不能连通直接结束 { printf("-1\n"); return 0; } int ans=0; for(int i=1; i<=n; ++i)//枚举每一个点 { if(i==x||i==y) continue; init(); for(int j=0; j<m; ++j) { if(u[j]==i||v[j]==i)//去除这个点所在的边 continue; int fx=Find(u[j]),fy=Find(v[j]); if(fx!=fy) pre[fx]=fy; } int fx=Find(x),fy=Find(y); if(fx!=fy) ans++; } printf("%d\n",ans); return 0; }
总结:蓝桥杯的题几乎每一道都能和暴力扯上关系,所以尽情地暴力吧!
相关文章推荐
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 风险度量(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)
- 2017蓝桥杯模拟题 猜算式(暴力枚举)