搜索 ( BFS )——Maximum Cut Order ( UVA 7460 )
2016-07-31 16:08
323 查看
题目链接:
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5482
分析:
给出一颗二叉树,每一条边的值为|i-j|%m,然后从给定节点出发,每次存入边值最大的节点。
题解:
用优先队列保存点,BFS搜索即可
AC 代码:
https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=5482
分析:
给出一颗二叉树,每一条边的值为|i-j|%m,然后从给定节点出发,每次存入边值最大的节点。
题解:
用优先队列保存点,BFS搜索即可
AC 代码:
#include <cstdio> #include <iostream> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <cctype> #include <map> #include <set> #include <queue> using namespace std; typedef pair<int,int> Pii; typedef long long LL; typedef unsigned long long ULL; typedef double DBL; typedef long double LDBL; #define MST(a,b) memset(a,b,sizeof(a)) #define CLR(a) MST(a,0) #define Sqr(a) ((a)*(a)) int k,n,s,m; int vis[666666]; struct node { int id; int val; bool operator< (const node &a ) const { if(val == a.val) return id>a.id; return val < a.val; } }Node[666666]; priority_queue<node> Q; vector<int> ans; void solve() { node tmp; tmp.id = s; vis[s] = 1; Q.push(tmp); ans.clear(); while(!Q.empty()) { tmp = Q.top(); int id = tmp.id; ans.push_back(id); Q.pop(); if( id/2 && !vis[id/2] ) { vis[id/2] = 1; tmp.id = id/2; tmp.val = (id - id/2)%m; Q.push(tmp); } if(id*2<=n && !vis[id*2]) { vis[id*2] = 1; tmp.id = id*2; tmp.val = id%m; Q.push(tmp); } if(id*2+1<=n && !vis[id*2+1]) { vis[id*2+1] = 1; tmp.id = id*2+1; tmp.val =(id+1) % m; Q.push(tmp); } } } int main() { scanf("%d", &k); while(k--) { scanf("%d%d%d", &n, &s, &m); CLR(vis); for(int i=1;i<=n;i++) { Node[i].id = i; Node[i].val = 0; } solve(); for(int i=0;i<n;i++) { if(i) printf(" "); printf("%d", ans[i]); } printf("\n"); } return 0; }
相关文章推荐
- 【BFS && 树】UVALive - 7460 Maximum Cut Order
- UVa 11244 counting stars ( 搜索 BFS)
- UVA 11882 Biggest Number (dfs搜索+bfs 剪枝)
- 搜索(DFS+BFS)——UVA Live 6455
- UVA 11624 UVA 10047 两道用 BFS进行最短路搜索的题
- UVALive-7354-Kitchen Measurements(BFS搜索)
- Uva11624 Fire(bfs 搜索)
- UVALive 7416 Bringing Order to Disorder(搜索)
- uva 816 有点复杂的BFS和宽度优先搜索模板 Abbott's Revenge
- BFS(两点搜索) UVA 11624 Fire!
- [状态搜索] UVa1601 The Morning after Halloween 普通BFS写法
- uva11624 Fire! BFS搜索 TWT Tokyo Olympic 2combo-2
- uva 11624 Fire!(搜索:BFS)
- uva439 Knight Moves (搜索 BFS, BFS启蒙题)
- UVA 1377 Ruler bfs+状压搜索
- UVA - 11624 Fire!(15.10.10 搜索专题)bfs
- UVA 1600 Patrol Robert 巡逻机器人 (启发搜索BFS)
- UVA 439 bfs搜索
- UVA 11624 Fire! BFS搜索
- UVa 11624 Fire!(搜索 -- BFS)