K - Strange Country II 暴力dfs判断有向图是否连通//lxm
You want to visit a strange country. There are n cities in the country. Cities are numbered from 1 to n. The unique way to travel in the country is taking planes. Strangely, in this strange country, for every two cities A and B, there is a flight from A to B or from B to A, but not both. You can start at any city and you can finish your visit in any city you want. You want to visit each city exactly once. Is it possible?
Input
There are multiple test cases. The first line of input is an integer T (0 < T <= 100) indicating the number of test cases. Then T test cases follow. Each test case starts with a line containing an integer n(0 < n <= 100), which is the number of cities. Each of the next n * (n - 1) / 2 lines contains 2 numbers A, B (0 < A, B <= n, A != B), meaning that there is a flight from city A to city B.
Output
For each test case:
- If you can visit each city exactly once, output the possible visiting order in a single line please. Separate the city numbers by spaces. If there are more than one orders, you can output any one.
- Otherwise, output "Impossible" (without quotes) in a single line.
Sample Input
3
1
2
1 2
3
1 2
1 3
2 3
Sample Output
1
1 2
1 2 3
这是一个dfs解决的题目,只要搜索下就可以得到想要的结果了
#include <iostream>
using namespace std;
#include <string.h>
int map[][];
int vis[];
int re[];
int n,flag;
int lu;
void dfs(int a)
{
if(lu==n)
{
flag=;
return;
}
for(int i=;i<=n;i++)
{
if(!vis[i]&&map[a][i])
{
re[lu]=i;
lu++;
vis[i]=;
dfs(i);
if(flag)return;
vis[i]=;
lu--;
}
}
return;
}
int main()
{
int t;
cin>>t;
while (t--) {
cin>>n;
if(n==)
cout<<<<endl;
else
{
memset(map, , sizeof(map));
memset(re, , sizeof(re));
memset(vis, , sizeof(vis));
flag=;
for(int i=;i<n*(n-)/;i++)
{
int s,d;
cin>>s>>d;
map[s][d]=;
}
for(int i=;i<=n;i++)
{
lu=;
re[lu]=i;
lu++;
vis[i]=;
dfs(i);
lu--;
if(flag)break;
vis[i]=;
}
if(flag)
{
for(int i=;i<n;i++)
{
if(i)
cout<<" "<<re[i];
else
cout<<re[i];
}
cout<<endl;
}
else
cout<<"Impossible"<<endl;
}
}
return ;
}
K - Strange Country II 暴力dfs判断有向图是否连通//lxm的更多相关文章
- Strange Country II 暴力dfs
这题点的个数(<=50)有限, 所以可以纯暴力DFS去搜索 //#pragma comment(linker, "/STACK:16777216") //for c++ Co ...
- ZOJ 3332 Strange Country II
Strange Country II Time Limit: 1 Second Memory Limit: 32768 KB Special Judge You want to v ...
- ZOJ 2475 Benny's Compiler(dfs判断有向图给定点有没有参与构成环)
B - Benny's Compiler Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %llu ...
- ZOJ 3332 Strange Country II (竞赛图构造哈密顿通路)
链接:http://www.icpc.moe/onlinejudge/showProblem.do?problemCode=3332 本文链接:http://www.cnblogs.com/Ash-l ...
- CSU 1660 K-Cycle(dfs判断无向图中是否存在长度为K的环)
题意:给你一个无向图,判断是否存在长度为K的环. 思路:dfs遍历以每一个点为起点是否存在长度为k的环.dfs(now,last,step)中的now表示当前点,last表示上一个访问的 点,step ...
- DFS应用——遍历有向图+判断有向图是否有圈
[0]README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 "DFS应用--遍历有向图+判断有向图是否有圈" 的idea 并用源代码加以实现 : ...
- UVA129 暴力dfs,有许多值得学习的代码
紫书195 题目大意:给一个困难的串,困难的串的定义就是里面没有重复的串. 思路:不需要重新对之前的串进行判重,只需要对当前的加入的字符进行改变即可. 因为是判断字典序第k个的字符串,所以要多一个全局 ...
- Zoj3332-Strange Country II(有向竞赛图)
You want to visit a strange country. There are n cities in the country. Cities are numbered from 1 t ...
- hdu 1325 判断有向图是否为树
题意:判断有向图是否为树 链接:点我 这题用并查集判断连通,连通后有且仅有1个入度为0,其余入度为1,就是树了 #include<cstdio> #include<iostream& ...
随机推荐
- go语言 变量类型
package main import "fmt" func main() { //这是我们使用range去求一个slice的和.使用数组跟这个很类似.创建数组 nums := [ ...
- js 字符串匹配
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- resource not found :rgbd_launch
放到src下,再次编译catkin_make git https://github.com/ros-drivers/rgbd_launch.git
- python json格式转xml格式
import xmltodict #json转xml函数 def jsontoxml(jsonstr): #xmltodict库的unparse()json转xml xmlstr = xmltodic ...
- angular5 directive和component的区别
指令分为三类,组件,属性指令和结构性指令 组件(Component directive):UI组件,继承于Directive: 属性指令(Attribute directive):改变组件的样式: 结 ...
- 16 Managing Undo
16 Managing Undo 从Oracle11g开始,在默认安装中oracle会自动管理undo, 典型安装中不需要DBA介入配置,然而,如果选择了flash back特性,你就需要进行一些un ...
- spoj Help the Military Recruitment Office!
题意:给出名字和地方,地方会重定向,最后再给出名字,问现在属于哪里? 用并查集. //#pragma comment(linker,"/STACK:1024000000,1024000000 ...
- 解决jenkins运行selenium测试出错的问题
If you run Jenkins as a service in the background it won't open apps in the foreground. You may eith ...
- vij 1097 贪心
合并果子 描述 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之 ...
- HDOJ1003
#include<iostream> using namespace std; int main() { ],t=,m; cin >> n; while(n--) { cin ...