zoj3761 Easy billiards
来源:互联网 发布:首届江苏网络 编辑:程序博客网 时间:2024/05/22 08:14
点击打开链接
首先建图,两点若能碰撞就连一条边,会有多个连通分量,一个连通分量可以最后转化为一个点,把每个连通分量转化成树,从叶子节点向上,即用每个节点碰撞它的父节点,一个dfs就能解决。
#include<iostream>#include<string>#include<cstring>#include<cstdio>#include<cmath>#include<iomanip>#include<map>#include<algorithm>#include<queue>#include<set>#define inf 1000000000#define pi acos(-1.0)#define eps 1e-8#define seed 131using namespace std;typedef pair<int,int> pii;typedef unsigned long long ull;typedef long long ll;const int maxn=100005;int n;int d[2005][2];vector<int>g[2005];bool vis[2005];int ans;struct node{ int p,q; node(int a,int b):p(a),q(b){}};vector<node>vec;void dfs(int u,int fa);int main(){ while(~scanf("%d",&n)) { vec.clear(); ans=0; memset(vis,0,sizeof(vis)); for(int i=0;i<n;i++) g[i].clear(); for(int i=0;i<n;i++) scanf("%d%d",&d[i][0],&d[i][1]); for(int i=0;i<n;i++) { for(int j=0;j<n;j++) { if(i==j) continue; if(d[i][0]==d[j][0]||d[i][1]==d[j][1]) g[i].push_back(j); } } for(int i=0;i<n;i++) { if(vis[i]==0) dfs(i,-1); } int len=vec.size(); cout<<n-len<<endl; for(int i=0;i<len;i++) { int a=vec[i].p; int b=vec[i].q; if(d[a][0]==d[b][0]) { if(d[a][1]<d[b][1]) printf("(%d, %d) UP\n",d[a][0],d[a][1]); else printf("(%d, %d) DOWN\n",d[a][0],d[a][1]); } if(d[a][1]==d[b][1]) { if(d[a][0]<d[b][0]) printf("(%d, %d) RIGHT\n",d[a][0],d[a][1]); else printf("(%d, %d) LEFT\n",d[a][0],d[a][1]); } } } return 0;}void dfs(int u,int fa){ int len=g[u].size(); vis[u]=1; for(int i=0;i<len;i++) { if(vis[g[u][i]]==0&&g[u][i]!=fa) { dfs(g[u][i],u); vec.push_back(node(g[u][i],u)); } }}
0 0
- zoj3761 Easy billiards
- Easy billiards
- zoj 3761 Easy billiards
- zoj 3761 Easy billiards
- zoj 3761 Easy billiards 乱搞
- ZOJ 3761 Easy billiards[dfs]
- Zoj 3761 Easy billiards dfs
- zoj 3761 Easy billiards(dfs搜索树)
- zoj 3761 Easy billiards(建图+贪心+dfs)
- [贪心+dfs] ZOJ 3761 Easy billiards
- ZOJ 3761 Easy billiards (DFS性质)
- ZOJ 3764 Easy billiards 月赛E题
- zoj 3761 Easy billiards 并查集+dfs
- ZOJ 3761 Easy billiards(并查集+树遍历)
- Easy billiards (zoj 3761 并查集+DFS)
- ZOJ 3761 —— Easy billiards(并查集+深搜)
- ZOJ 3761——Easy billiards(DFS,并查集)
- ZOJ 3761 —— Easy billiards(并查集+深搜)
- 初学EasyUI datagrid:如何用datagrid进行数据的查询
- Windows创建Mysql定时备份
- 金融系列6《借贷记交易流程》
- 验证非空,包括输入一堆空格。
- 第2章 感知机
- zoj3761 Easy billiards
- Visual Studio 2010 可以跑的更快!
- ZeptoLab Code Rush 2015
- 金融系列7《动态数据认证》
- 根据2个条件判断集合里面是否存在元素,用拉姆达表达式
- UVALive 3211 - Now or later(2-SAT + 二分)
- Spring JdbcTemplate增强版
- JAVA调用数据库存储过程
- hdu 1087 上升子序列最大和