hdu5305搜索
2015-07-24 11:43
363 查看
import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.StreamTokenizer; import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; import java.util.Comparator; import java.util.HashMap; import java.util.LinkedList; import java.util.PriorityQueue; import java.util.Queue; import java.util.Scanner; import java.util.Stack; import java.util.StringTokenizer; import com.sun.org.apache.regexp.internal.recompile; import sun.security.krb5.Asn1Exception; public class Main { public static void main(String[] args) throws IOException{ StreamTokenizer cin = new StreamTokenizer(new BufferedInputStream(System.in)); InputReader in = new InputReader(System.in) ; PrintWriter out = new PrintWriter(System.out) ; int t = in.nextInt() ; while(t-- > 0){ new Task().solve(in , out) ; } out.flush() ; } } class Task{ int m , n , sum ; static int[]u = new int[30] ; static int[]v = new int[30] ; static int[] du = new int[10] ; static int[] on = new int[10] ; static int[] off = new int[10] ; void dfs(int id){ if(id == m+1){ for(int i = 1 ; i <= n ; i++){ if(on[i] != off[i]) return ; } sum++ ; return ; } int x = u[id] ; int y = v[id] ; if(on[x] < du[x] && on[y] < du[y]){ on[x]++ ; on[y]++ ; dfs(id + 1) ; on[x]-- ; on[y]-- ; } if(off[x] < du[x] && off[y] < du[y]){ off[x]++ ; off[y]++ ; dfs(id + 1) ; off[x]-- ; off[y]-- ; } } public void solve(InputReader in , PrintWriter out) throws IOException{ n = in.nextInt() ; m = in.nextInt() ; Arrays.fill(du, 0) ; for(int i = 1 ; i <= m ; i++){ u[i] = in.nextInt() ; v[i] = in.nextInt() ; du[u[i]]++ ; du[v[i]]++ ; } for(int i = 1 ; i <= n ; i++){ if((du[i] & 1) == 1){ out.println(0) ; return ; } du[i] >>= 1 ; } sum = 0 ; Arrays.fill(on, 0) ; Arrays.fill(off, 0) ; dfs(1) ; out.println(sum) ; // out.flush() ; } } class InputReader{ public BufferedReader reader; public StringTokenizer tokenizer; public InputReader(InputStream stream){ reader = new BufferedReader(new InputStreamReader(stream), 32768); tokenizer = null; } public String next(){ while(tokenizer == null || !tokenizer.hasMoreTokens()){ try{ tokenizer = new StringTokenizer(reader.readLine()); }catch (IOException e) { throw new RuntimeException(e); } } return tokenizer.nextToken(); } public int nextInt() { return Integer.parseInt(next()); } public long nextLong() { return Long.parseLong(next()); } }
相关文章推荐
- 我的hihocoder存代码
- 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: 共享内存提供程序, error: 0 - 管道的另一端上无任何进程。)
- MySQL 之 slow log
- Wildfly8 POST请求中文乱码分析与解决
- 创业公司十分钟简单搭建GIT私有库
- Codeigniter下配置nginx
- 如何在Linux服务器上开启安全的SNMP代理
- JavaScript学习笔记——基本知识
- UVA 11374 Airport Express 机场快线(单源最短路,dijkstra,变形)
- 流程控制表设计
- System Generator学习笔记(三)
- Apache Hadoop YARN - 项目背景与简介
- bootstrap
- 矩阵模板
- 日期计算
- 如何在Linux服务器上开启安全的SNMP代理
- Tephra之初
- Friends(DFS+剪枝)
- [网络编程]TCP协议和UDP协议的区别
- POJ 2457--Part Acquisition 【spfa最短路 + STL路径输出】