package
aLgraph
;
import
java.io.BufferedReader
;
import
java.io.File
;
import
java.io.FileReader
;
public
class
GraphReverse
{
public
static
void
main
(
String
[]
args
)
{
// TODO 自动生成的方法存根
File
file
=
new
File
(
"F:/Arithmetic/tinyDG.txt"
);
int
V
;
int
E
;
int
v
[];
int
g
[][];
int
h
[][];
int
tempchar
;
String
str
=
""
;
try
{
FileReader
in
=
new
FileReader
(
file
);
BufferedReader
bufr
=
new
BufferedReader
(
in
);
str
=
bufr
.
readLine
();
V
=
Integer
.
parseInt
(
str
);
v
=
new
int
[
V
];
for
(
int
i
=
0
;
i
<
V
;
i
++){
v
[
i
]=
i
;
}
str
=
bufr
.
readLine
();
E
=
Integer
.
parseInt
(
str
);
g
=
new
int
[
V
][
V
];
h
=
new
int
[
V
][
V
];
str
=
""
;
int
a
=
0
;
int
b
=
0
;
while
((
tempchar
=
bufr
.
read
())
!=
-
1
)
{
str
=
str
+
(
char
)
tempchar
;
if
((
char
)
tempchar
==
' '
)
{
a
=
Integer
.
parseInt
(
str
.
trim
());
str
=
""
;
}
if
((
char
)
tempchar
==
'\n'
)
{
b
=
Integer
.
parseInt
(
str
.
trim
());
g
[
a
][
b
]
=
1
;
h
[
b
][
a
]
=
1
;
str
=
""
;
}
}
System
.
out
.
println
(
"有向图邻接表:"
);
for
(
int
i
=
0
;
i
<
V
;
i
++)
{
System
.
out
.
print
(
v
[
i
]+
":"
);
for
(
int
j
=
0
;
j
<
V
;
j
++)
{
if
(
g
[
i
][
j
]
!=
0
)
{
System
.
out
.
print
(
j
+
" "
);
}
}
System
.
out
.
println
(
""
);
}
System
.
out
.
println
(
""
);
System
.
out
.
println
(
"反向图邻接表:"
);
for
(
int
i
=
0
;
i
<
V
;
i
++)
{
System
.
out
.
print
(
v
[
i
]+
":"
);
for
(
int
j
=
0
;
j
<
V
;
j
++)
{
if
(
h
[
i
][
j
]
!=
0
)
{
System
.
out
.
print
(
j
+
" "
);
}
}
System
.
out
.
println
(
""
);
}
bufr
.
close
();
in
.
close
();
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
}
}