博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
再不做题就老了,这个假期就这么地了
阅读量:6563 次
发布时间:2019-06-24

本文共 2671 字,大约阅读时间需要 8 分钟。

1.POJ 2186

题意:有n头牛和m个有向关系表示两个牛有暧昧关系,牛还都挺喜欢自己的,问你有多少牛是被全体喜欢的。

理解:一看到全体就知道要求两两可达的强连通分量,要是只有一个联通分量就说明每个牛都和其他牛暧昧,多余一个联通分量那就要看他们是不是连成串,穿成串那最后一个出度为0的就是牛中最high的牛群,但要是有个出度大于1或存在2个出度为0的联通分量,就没有那么好的牛了,所以Tarjan对图分析一遍,得到缩的点之间的出度关系。

#include 
#include
#include
#include
using namespace std;const int MAXN = 100002;int in[MAXN], out[MAXN];vector
G[MAXN];int dfn[MAXN],low[MAXN],belong[MAXN],belong_cnt[MAXN];int Count,n,m,cnt;bool instack[MAXN];stack
stap;void init(){ Count=cnt=0; memset(dfn,0,sizeof(dfn)); memset(belong,0,sizeof(belong)); memset(instack,0,sizeof(instack)); memset(belong_cnt,0,sizeof(belong_cnt));}void tarjan(int x){ int i; dfn[x]=low[x]=++cnt; stap.push(x); instack[x]=1; for(i=0;i
1) printf("0\n"); else printf("%d\n", ans); } return 0;}
View Code

 

2.POJ 3020

题意:有些格子中的点,要我们用最少的可以覆盖两个相邻点的圈,覆盖所有的点。

理解:http://www.cnblogs.com/updateofsimon/p/3441343.html 最小路径覆盖问题,将每个点拆成两个点一左一右,相邻的点连线,求个最大匹配,每2个表示一种匹配,所以结果就是 点个数 - 最大匹配/2

#include 
#include
#define MAXN 405int point[41][11];int G[MAXN][MAXN],link[MAXN],used[MAXN],n,m;bool path(int u) { for(int i=1;i<=n;i++) if(G[u][i] && !used[i]) { used[i] = 1; if(link[i]==-1 || path(link[i])) { link[i] = u; return true; } } return false;}void hungary() { int ans = 0; memset(link,-1,sizeof(link)); for(int i=1;i<=n;i++) { memset(used,0,sizeof(used)); if(path(i)) ans++; } printf("%d\n", n-ans/2);}int main() { int T; int x,y; int dir[4][2]={
0,-1,0,1,-1,0,1,0}; scanf("%d",&T); while(T--) { n = 0; char ch; scanf("%d%d",&x,&y); memset(point,0,sizeof(point)); memset(G,0,sizeof(G)); for(int i = 0; i < x; i++) { getchar(); for (int j = 0; j < y; j++) { ch=getchar(); if (ch=='*') point[i][j] = ++n; } } for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { if(point[i][j]) for (int d = 0; d < 4; d++) if(i+dir[d][0]>= 0 && i+dir[d][0] < x && j+dir[d][1] >= 0 && j+dir[d][1] < y) if(point[i+dir[d][0]][j+dir[d][1]]) G[point[i][j]][point[i+dir[d][0]][j+dir[d][1]]] = 1; } } hungary(); } return 0;}
View Code

 

转载于:https://www.cnblogs.com/updateofsimon/p/3549468.html

你可能感兴趣的文章
浅析rune数据类型
查看>>
普通用户开启AUTOTRACE 功能
查看>>
Bind+Nginx实现负载均衡
查看>>
游侠原创:推荐一款免费的Syslog转发工具
查看>>
巧用Zabbix自定义监控Mysql性能状态
查看>>
UIKeyboard键盘相关知识点-IOS开发
查看>>
你真的会 snapshot 吗? - 每天5分钟玩转 OpenStack(163)
查看>>
onAttachedToWindow和onDetachedFromWindow调用时机源码解析
查看>>
虚拟机外接USB设备情况的vMotion问题
查看>>
Mysql数据库大小查询
查看>>
#78 Reimplement Trampoline
查看>>
使用Java制作图文验证码
查看>>
java 代理
查看>>
数据库设计三范式
查看>>
Eclipse插件开发- view to view drag drop
查看>>
Linux 技巧:让进程在后台可靠运行的几种方法
查看>>
根据Servlet的Filter自定义实现字符编码过滤器
查看>>
oh-my-zsh安装与配置
查看>>
git修改远程仓库地址
查看>>
Guess the number
查看>>