【usaco 2013 Mar Bronze】种类分配
来源:互联网 发布:floyd算法 路径 编辑:程序博客网 时间:2024/05/18 03:51
题目:
农夫约翰有N只奶头,这N只奶牛分别属于三个种类:A,B,C。但是不幸的是,约翰忘记了每只奶牛分别属于哪个种类了。他仅仅只记得的K个奶牛之间的关系。例如,他记得奶牛1和奶牛2是同一种类,或者奶牛1和奶牛5是不同种类的。
问题描述:
给定这K个关系,请帮助约翰计算这N只奶牛可能的种类分布情况共有多少种。(当K个关系本身就是矛盾的时候,答案是0)。
农夫约翰有N只奶头,这N只奶牛分别属于三个种类:A,B,C。但是不幸的是,约翰忘记了每只奶牛分别属于哪个种类了。他仅仅只记得的K个奶牛之间的关系。例如,他记得奶牛1和奶牛2是同一种类,或者奶牛1和奶牛5是不同种类的。
问题描述:
给定这K个关系,请帮助约翰计算这N只奶牛可能的种类分布情况共有多少种。(当K个关系本身就是矛盾的时候,答案是0)。
题解:
搜索。
代码:
var n,m,ans:longint; a,b:array[0..15] of longint; c:array[1..15] of boolean; f:array[1..15,1..15] of longint;function main(x,y,z:longint):boolean;var i:longint;begin for i:=1 to x do if ((f[b[i],y]=1)and(z<>a[i]))or((f[b[i],y]=2)and(z=a[i])) then exit(false); exit(true);end;procedure dfs(t:longint);var i:longint;begin if t>b[0] then begin inc(ans); exit; end; for i:=1 to 3 do if main(t-1,b[t],i) then begin inc(a[0]); a[a[0]]:=i; dfs(t+1); a[a[0]]:=0; dec(a[0]); end;end;procedure init;var i,x,y:longint; s:char;begin readln(n,m); fillchar(c,sizeof(c),true); for i:=1 to m do begin readln(s,x,y); if c[x] then begin c[x]:=false; inc(b[0]); b[b[0]]:=x; end; if c[y] then begin c[y]:=false; inc(b[0]); b[b[0]]:=y; end; if s='S' then begin f[x,y]:=1;f[y,x]:=1; end else begin f[x,y]:=2;f[y,x]:=2; end; end;end;var i:longint;begin assign(input,'assign.in'); reset(input); assign(output,'assign.out'); rewrite(output); init; dfs(1); for i:=1 to n-b[0] do ans:=ans*3; writeln(ans); close(input); close(output);end.
3 0
- 【usaco 2013 Mar Bronze】种类分配
- 【usaco 2013 Mar Bronze】种类分配
- 【usaco 2013 Mar Bronze】
- USACO 2012 Mar Bronze 1.Times 17
- USACO 2013 March contest Bronze level 总结
- 【usaco 2013 feb Bronze】信息传递
- 【usaco 2013 feb Bronze】计算周长
- 【usaco 2013 feb Bronze】信息传递
- 【usaco 2013 feb Bronze】计算周长
- [USACO] OPEN11 Bronze Division
- usaco 2008 jan bronze
- 【USACO】JAN.BRONZE
- USACO January 2014 Bronze Level
- angryA (USACO 2016 JAN Bronze)
- USACO 2009 Mar CleaningUp
- USACO 2006 Mar SkiLift
- USACO 2009 Mar CowFrisbeeTeam
- USACO 2015 Feb Bronze 1.Censoring (Bronze) 栈+Hash
- Matlab绘图-详细全面(图)
- 判断单链表是否为回文
- LeetCode 226. Invert Binary Tree
- 决策树中的id3算法理解
- EL表达式遍历大小写
- 【usaco 2013 Mar Bronze】种类分配
- VisualSvn Server的使用
- 快速幂+费马小定理 690D2 - The Wall (medium)CF
- HTML5与HTML4的区别
- SQL Server的触发器用法
- **PYTHON** 函数
- c++ inline 的一些小知识
- shell脚本
- 判断单链表是否含环