package bbb;
import java.io.File;
import java.io.Reader;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class GraphReverse {
public static int V=0,E=0;
public static void GR(String fname){
File file = new File(fname);
Reader r = null;
try {
r = new InputStreamReader(new FileInputStream(file));
int tem;
tem = r.read();
while(tem!=10){
V=V*10+(tem-48);
tem = r.read();
}
tem = r.read();
while(tem!=10){
E=E*10+(tem-48);
tem = r.read();
}
int mvk[][]=new int[V][V];
int tag[][]=new int[V][V];
int bce[]=new int[2*E];
for(int m=0;m<V;m++)
for(int n=0;n<V;n++){
mvk[m][n]=0;
tag[m][n]=0;
}
int x1=0,x2=0,y=0,y2=0,z=0;
while((tem = r.read())!=-1)
{
if(tem>=48 && tem<=57)
{
y=y*10+(tem-48);
y2=1;
}
if(tem<48 && y2==1)
{
bce[z]=y;
y=0;
y2=0;
z++;
}
}
r.close();
for(int m=0;m<2*E;m++){
x1=bce[m];
m=m+1;
x2=bce[m];
mvk[x1][x2]=1;
tag[x2][x1]=1;
}
System.out.println("有向图的邻接表为:");
for(int m=0;m<V;m++){
System.out.print(m+": ");
for(int n=0;n<V;n++){
if(mvk[m][n]==1)
System.out.print(n+" ");
}
System.out.println();
}
System.out.println("反向图的邻接表为:");
for(int m=0;m<V;m++){
System.out.print(m+": ");
for(int n=0;n<V;n++){
if(tag[m][n]==1)
System.out.print(n+" ");
}
System.out.println();
}
}catch (Exception a) {
a.printStackTrace();
}
}
public static void main(String args[]){
GR("E:\\tinyDG.txt");
}
}