Arbiter
Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 800 Accepted Submission(s): 410
Problem Description
Arbiter
is a kind of starship in the StarCraft science-fiction series. The
Arbiter-class starship is a Protoss warship specializing in providing
psychic support. Arbiters were crewed exclusively by Judicators; unlike
other warships that were manned predominantly by Templar. The Judicator
used the Arbiter as a base to provide support using space-time
manipulation.
Arbiters could weaken space-time, tearing rifts in the
fabric of space-time, creating a vortex linking another location to the
Arbiter’s location. This could be used to move personnel over long
distances between stars.
In the meantime of widely used Arbiter to
transfer, KMXS, the captain of one Arbiter, was warning that some person
had got a serious mental disorder after the trip on his Arbiter. By
using mice as model animals, he found the sake, it’s because of
chirality!
Every person has chirality, either left-handed or
right-handed. Actually all the persons must live with the food which has
the same chirality. When one person took Arbiter from one star to
another one, his chirality will be changed (from left-handed to
right-handed or from right-handed to left-handed). If a person took a
long trip and finally got back to his own star, however, his chirality
might be changed to the opposite state other than his original, which
would cause fatal mental disorder, or even death.
KMXS has the
channels map among the starts and he need to prohibit minimum number of
channels from traveling so that wherever a person starts his traveling
from when he gets his original star he’ll be safe. KMXS turns to your
help.
Input
The first line of input consists of an integer T, indicating the number of test cases.
The
first line of each case consists of two integers N and M, indicating
the number of stars and the number of channels. Each of the next M lines
indicates one channel (u, v) which means there is a bidirectional
channel between star u and star v (u is not equal to v).
Output
Output
one integer on a single line for each case, indicating the minimum
number of channels KMXS must prohibit to avoid mental disorder.
Constraints
0 < T <= 10
0 <= N <= 15 0 <= M <= 300
0 <= u, v < N and there may be more than one channel between two stars.
Sample Input
1
3 3
0 1
1 2
2 0
Sample Output
1
Source
2009 Asia Wuhan Regional Contest Online
这道题的意思:
Arbiter
“仲裁者”是《星际争霸》科幻系列中的一种太空船。仲裁者级太空船是神族的战船,专门提供精神力支援。不像其他战船的人员主要是战士阶级,仲裁者所承载的都是统治阶级。统治者以仲裁者为基地,用时空操控来提供支援。
仲裁者可以克服时空限制,撕裂时空,产生裂缝,制造涡洞,把另一个空间连接到仲裁者所在空间,可以用来运送人员,跨越长途星际。
正当仲裁者广泛用于运输的时候,一艘仲裁者的船长 KMXS 发出警告,有些人员在他的船上完成旅程之后,得到严重的精神错乱。他用小白鼠做动物实验,找到了原因,是生物化学中的“手性”!
每个人 都有手性,是左手性或者右手性。事实上,所有人的生存都必须依靠相同手性的食物。一个人乘坐仲裁者从一个星球到另一个星球的时候,他的手性会改变,(从左 手性变成右手性,或者从右手性变成左手性。)如果一个人经过长途旅行,最后回到自己的星球,可是他的手性却可能改变成跟原来的相反,那就会造成致命的精神 错乱,甚至死亡。
KMXS 拥有星球之间的航道图。他需要禁止通过航道的最少数目,以致无论一个人从哪里出发,当他回到自己的星球,会是安全的。KMXS请求你的帮助。
Input
第一行输入有一个整数 T,表示测试用例的数目。
每个用例的第一行有两个整数 N 和 M,表示星球的数目和航道的数目。随后的 M 行表示航道,每个 (u, v) 代表在星球 u 和星球 v 之间有一条双向的航道(u 不等于 v)。
Output
每个测试用例的结果输出一行,用一个整数表示KMXS为了要避免人们精神错乱, 必须禁止的最少航道数目。
Constraints
0 < T <= 10
0 <= N <= 15 0 <= M <= 300
0 <= u, v < N在两个星球之间可以有超过一条航道
Sample Input
13 30 11 22 0
Sample Output
1
很明显: 这个意思是,可以从任意一个星球,到大另一个星球,但是每个星球都有手性.....
要我们求出,对于任何一个星球出发都不能通过奇数次传递回到该星球...也就是不能形成奇数环..
而我们知道,二分图的充要条件是: 至少存在两个顶点,每一个点的回路的长度都是偶数...
所以只需进行擦边,来构成二分图就可以了.,...
代码:
1 #include<cstring> 2 #include<cstdio> 3 const int maxn=305; 4 int aa[maxn],bb[maxn]; 5 int n,m; 6 int main(){ 7 int test; 8 //freopen("test.in","r",stdin); 9 scanf("%d",&test); 10 while(test--){ 11 scanf("%d%d",&n,&m); 12 for(int i=0;i<m;i++){ 13 scanf("%d%d",aa+i,bb+i); 14 } 15 int ans=m+2; 16 for(int i=0;i<(1<<n);i++) //2^n种情况,对于每一个星球都可以两种情况要么为左,要么为右 17 { 18 int cnt=0; 19 for(int j=0;j<m;j++){ 20 if(((i>>aa[j])%2)==((i>>bb[j])%2)) //属于同一个世界,说明呵呵存在奇数环 21 cnt++; 22 } 23 if(ans>cnt)ans=cnt; 24 } 25 printf("%d\n",ans); 26 } 27 return 0; 28 }