1. 有向图中反向图构造。对tinyDG.txt(http://pan.baidu.com/s/1o6jWtcA)文件所表示的图,输出其邻接表表示 与 反向图的邻接表表示。类名:GraphReverse。
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.PrintWriter;
public class GraphSSC {
static int arc[][];
static int vertextNum;
static int arcNum;
static int vartex[];
public static void main(String[] args) {
String path1="src/tinyDG.txt";
String path2="src/tinyGResult.txt";
try {
FileReader read=new FileReader(new File(path1));
BufferedReader reader=new BufferedReader(read);
PrintWriter out=new PrintWriter(new File(path2));
String line="";
int index=1;
while((line=reader.readLine())!=null){
if(index==1){
vertextNum=Integer.parseInt(line.trim());
index++;
continue;
}else if(index==2){
arcNum=Integer.parseInt(line.trim());
index++;
continue;
} else if(index==3){
arc=new int[vertextNum][arcNum];
index++;
continue;
}
addEadge(line);
}
for(int i=0;i<vertextNum;i++){
String result = FormEadge(i);
out.print(result+"\t");
out.flush();
out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}
public static void addEadge(String line){
line = line.replace(" ", " ");
String []result=line.trim().split(" ");
int v1=Integer.parseInt(result[0]);
int v2=Integer.parseInt(result[1]);
for(int i=0;i<arcNum;i++){
arc[v1][v2]=1;
//arc[v2][v1]=1; //反向图时候,屏蔽另外一句
}
}
public static String FormEadge(int line){
String result = line+":";
for(int index=0;index<arc[line].length;index++){
if(arc[line][index]==1){
result = result + index + " ";
}
}
return result;
}
}