CS 400 BFS-DFS 构造
2017-11-29 20:26
239 查看
题意:n个点的图 起点都为1,给出其dfs和bfs序列 若有解,求出其m条边 否则输出-1.n<=4096. 边的个数<=1e5.
第2个点如果不同 则无解.
构造:1和按顺序和b[i]连边 然后对每个(d[i-1],d[i])[i>1] 连一条边 此时满足bfs,dfs序列(66666).
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
const int N=4e3+120;
int n,b
,d
;
map<int,int> mp
;
vector<ii> res;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
if(b[2]!=d[2])
{
puts("-1");
return 0;
}
for(int i=2;i<=n;i++)
{
mp[1][b[i]]=1;
res.push_back(ii(1,b[i]));
}
for(int i=2;i<=n;i++)
{
if(mp[d[i-1]][d[i]])
continue;
mp[d[i-1]][d[i]]=1;
res.push_back(ii(d[i-1],d[i]));
}
printf("%d\n",res.size());
for(int i=0;i<res.size();i++)
printf("%d %d\n",res[i].first,res[i].second);
return 0;
}
第2个点如果不同 则无解.
构造:1和按顺序和b[i]连边 然后对每个(d[i-1],d[i])[i>1] 连一条边 此时满足bfs,dfs序列(66666).
#include <bits/stdc++.h>
using namespace std;
typedef pair<int,int> ii;
const int N=4e3+120;
int n,b
,d
;
map<int,int> mp
;
vector<ii> res;
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
scanf("%d",&b[i]);
for(int i=1;i<=n;i++)
scanf("%d",&d[i]);
if(b[2]!=d[2])
{
puts("-1");
return 0;
}
for(int i=2;i<=n;i++)
{
mp[1][b[i]]=1;
res.push_back(ii(1,b[i]));
}
for(int i=2;i<=n;i++)
{
if(mp[d[i-1]][d[i]])
continue;
mp[d[i-1]][d[i]]=1;
res.push_back(ii(d[i-1],d[i]));
}
printf("%d\n",res.size());
for(int i=0;i<res.size();i++)
printf("%d %d\n",res[i].first,res[i].second);
return 0;
}
相关文章推荐
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
- 图的构造、DFS、BFS 以及图的删除实现
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
- 图的基本操作(基于邻接矩阵):图的构造,深搜(DFS),广搜(BFS)
- 删除实现图的构造、DFS、BFS 以及图的删除实现
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
- CS 400 Palindromic Tree 思维+构造(回文子串)
- CS 400 Coprime Pairs 构造!!!
- 数据结构(17)——基于邻接表的基本操作:构造,深搜(DFS),广搜(BFS)
- 图的基本操作(基于邻接表):图的构造,深搜(DFS),广搜(BFS)
- 洛谷 P1710 地铁涨价 (dfs+bfs)
- 【 LightOJ - 1094】Farthest Nodes in a Tree(求树的直径)链式向前星 + DFS or BFS
- POJ 3083 Children of the Candy Corn( BFS + DFS )有意思的题目
- LeetCode 133 Clone Graph (BFS || DFS)
- 二分图判定(UVA10004)(DFS或者BFS)
- 二分图的判定模板(dfs,bfs)
- POJ 1724 ROADS (有限制的最短路径DFS/BFS)
- 地牢逃生(bfs,dfs均可)