UVa10596 - Morning Walk(并查集)

简介: UVa10596 - Morning Walk(并查集)
importjava.io.FileInputStream;
importjava.io.InputStreamReader;
importjava.io.BufferedReader;
importjava.io.PrintWriter;
importjava.io.OutputStreamWriter;
importjava.io.StreamTokenizer;
classMain{
publicstaticfinalbooleanDEBUG=false;
publicstaticintN=30;
publicBufferedReadercin;
publicPrintWritercout;
publicStreamTokenizertokenizer;
publicintn, r;
publicint[] p, d;
publicvoidinit()
    {
try {
if (DEBUG) {
cin=newBufferedReader(newInputStreamReader(
newFileInputStream("d:\\OJ\\uva_in.txt")));
            } else {
cin=newBufferedReader(newInputStreamReader(System.in));
            }
cout=newPrintWriter(newOutputStreamWriter(System.out));
tokenizer=newStreamTokenizer(cin);
        } catch (Exceptione) {
e.printStackTrace();
        }
    }
publicStringnext()
    {
try {
tokenizer.nextToken();
if (tokenizer.ttype==StreamTokenizer.TT_EOF)
returnnull;
elseif (tokenizer.ttype==StreamTokenizer.TT_NUMBER) {
returnString.valueOf((int) tokenizer.nval);
            }
returnnull;
        } catch (Exceptione) {
e.printStackTrace();
returnnull;
        }
    }
publicintfind(intx)
    {
returnp[x] ==x?x : (p[x] =find(p[x]));
    }
publicbooleaninput()
    {
Strings=next();
if (s==null) returnfalse;
n=Integer.parseInt(s);
s=next();
r=Integer.parseInt(s);
p=newint[n];
d=newint[n];
for (inti=0; i<n; i++) {
p[i] =i;
d[i] =0;
        }
for (inti=0; i<r; i++) {
s=next();
inta=Integer.parseInt(s);
s=next();
intb=Integer.parseInt(s);
p[find(b)] =find(a);
d[a]++;
d[b]++;
        }
returntrue;
    }
publicvoidsolve()
    {
booleanok=true;
if (n==0||r<=1) ok=false;
introot=find(0);
for (inti=0; i<n&&ok; i++) {
if (d[i] !=0) {
if (find(i) !=root||d[i] %2!=0) {
ok=false;
break;
                }
            }
        }
if (ok) {
cout.println("Possible");
        } else {
cout.println("Not Possible");
        }
cout.flush();
    }
publicstaticvoidmain(String[] args)
    {
Mainsolver=newMain();
solver.init();
while (solver.input()) {
solver.solve();
        }
    }
}
kgduu
+关注
目录
打赏
0
0
0
0
0
分享
相关文章
UVa872 - Ordering(拓扑排序)
UVa872 - Ordering(拓扑排序)
72 0
汉诺塔(Hanoi Tower)
汉诺塔(Hanoi Tower)是一个经典的递归问题,也被称为汉诺塔问题。它由三个柱子和一个圆盘组成,圆盘可以沿着柱子向上或向下移动。问题的目标是将所有圆盘从第一个柱子移动到第三个柱子,移动过程中需要遵循以下规则:
305 8
UVa668 - Parliament(贪心)
UVa668 - Parliament(贪心)
110 0
AtCoder Beginner Contest 216 D - Pair of Balls (思维建图 拓扑排序判断有向图是否有环)
AtCoder Beginner Contest 216 D - Pair of Balls (思维建图 拓扑排序判断有向图是否有环)
143 0
[Nowcoder] network | Tarjan 边双连通分量 | 缩点 | LCA倍增优化 | 并查集
题目描述 A network administrator manages a large network. The network consists of N computers and M links between pairs of computers. Any pair of computers are connected directly or indirectly by successive links, so data can be transformed between any two computers.
145 0
[Nowcoder] network | Tarjan 边双连通分量 | 缩点 | LCA倍增优化 | 并查集
HDOJ/HDU Tempter of the Bone(深搜+奇偶性剪枝)
HDOJ/HDU Tempter of the Bone(深搜+奇偶性剪枝)
115 0

热门文章

最新文章

下一篇
oss创建bucket