1万定点有向图求环
这个程序只能处理有限个数的顶点,内存不够,有没有高手能够指导一下,如何修改程序,能够处理1万个顶点?急,,,,,谢谢了高手们!!!!!!
--------------------编程问答-------------------- LZ是搞ACM的?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Hashtable;
public class Test7 {
static private long[] visited = new long[20];
static private long[][] e = new long[20][20];
static ArrayList<Integer> trace=new ArrayList<Integer>();
static boolean hasCycle=false;
public static void main(String[] args) throws IOException {
for (int i = 0; i < e.length; i++){
for (int j = 0; j < e[i].length; j++){
e[i][j]=0;
}
}
BufferedReader in = new BufferedReader(
new InputStreamReader(new FileInputStream("3.txt")));
String str = in.readLine();
StringBuffer buffer = new StringBuffer();
do{
buffer.append(str);
buffer.append(" ");
String[] s = buffer.toString().split(" ");
buffer.delete(0, buffer.length());
int a = Integer.parseInt(s[0]);
int b = Integer.parseInt(s[1]);
e[a][b] = 1;
str = in.readLine();
}while(str!=null);
in.close();
findCycle(0);
if(!hasCycle)
System.out.println("No Cycle.");
}
static void findCycle(int v)
{
if(visited[v]==1)
{
int j;
if((j=trace.indexOf(v))!=-1)
{
hasCycle=true;
System.out.print("Cycle:");
while(j<trace.size())
{
System.out.print(trace.get(j)+" ");
j++;
}
System.out.print("\n");
return;
}
return;
}
visited[v]=1;
trace.add(v);
for(int i=0;i<20;i++)
{
if(e[v][i]==1)
findCycle(i);
}
trace.remove(trace.size()-1);
}
}
--------------------编程问答-------------------- 搞数据分析的 --------------------编程问答-------------------- 没有人会吗?自己顶一个 --------------------编程问答-------------------- 高手呢?都不在?
补充:Java , Java相关