回 帖 发 新 帖 刷新版面

主题:有问题 求无向图中的最大连通分量阿

import java.io.BufferedReader;
import java.io.InputStreamReader;




class GraphEinlesen 
    { 
        private int knoten;
        private int kanten;
        private int vonKnotenNummer;
        private int nachKnotenNummer;
        
        public GraphEinlesen(int knoten)
        {
            this.knoten = knoten;
            
        }
        
        public GraphEinlesen(int vonKnotenNummer,int nachKnotenNummer )
        {
            this.vonKnotenNummer = vonKnotenNummer;
            this.nachKnotenNummer = nachKnotenNummer;
        }
        
        public int getKnoten()
        {
            return knoten;
        }
        public void setKnoten(int knoten)
        {
            this.knoten = knoten;
        }
        

        public int getKanten()
        {
            return kanten;
        }
        public void setKanten(int kanten)
        {
            this.kanten = kanten;
        }
        
        public int getVonKnotenNummer( )
        {
            return vonKnotenNummer;
        }
        public void setVonKnotenNummer( int vonKnotenNummer)
        {
            this.vonKnotenNummer = vonKnotenNummer;
        }
        
        public int getNachKnotenNummer( )
        {
            return nachKnotenNummer;
        }
        public void setNachKnotenNummer (int nachKnotenNummer)
        {
            this.nachKnotenNummer = nachKnotenNummer;
        }
        
    }


public class Komponenten 
    {  
       static int behalten[] ;
       static int Anzahl = 0;   //Anzahl der maxmale Komponenten
       static int gesucht[];
       static GraphEinlesen []graphEinlesen = null;//speicherr jede Object von GraphEinlesen
    
       public static void main(String []agrs)throws Exception
      {
          int knote;
          int kante;
          int vonKnoteNummer;
          int nachKnoteNummer;
           GraphEinlesen ge0=null ;//in ge0 speichert Knoten 
          GraphEinlesen ge=null ; //eine Object von GraphEinlesen
          
          
           
          BufferedReader buf = new BufferedReader(new InputStreamReader(System.in));
         
              System.out.println("bitten knoten und kante einlesen");
              
              System.out.print("knoten =");
              knote = Integer.parseInt(buf.readLine());
              
              System.out.print("kanten =");
              kante = Integer.parseInt(buf.readLine());
              
              ge0 = new GraphEinlesen(knote);
              ge0.setKanten(kante);
              graphEinlesen = new GraphEinlesen[ge0.getKanten()];
              for(int a=0;a<ge0.getKanten();a++)
              {
                  System.out.print("vonKnotenNummer =");
                  vonKnoteNummer = Integer.parseInt(buf.readLine());
                  
                  System.out.print("nachKnotenNummer =");
                  nachKnoteNummer = Integer.parseInt(buf.readLine());
                  
                  ge = new GraphEinlesen(vonKnoteNummer, nachKnoteNummer);
                  graphEinlesen[a] = ge;
              }
              
               gesucht = new int[ge0.getKnoten()+1];//speichert gesucht konten
               gesucht[0]=1;
               for(int n=1;n<ge0.getKnoten()+1;n++)
              {
                   
                  gesucht[n] = 0;
              }
             
              for(int m=1;m<ge0.getKnoten()+1;m++)
              {
                  System.out.println(gesucht[3]);
                  if(gesucht[m]==0)
                  {
                      Anzahl++;
                      suchen(m);
                      
                  }
                 
              }
               System.out.println("Anzahl der maxmale Komponenten ist"+Anzahl);
      }
              public static void suchen(int anfangKnote) 
              { 
                  
                  behalten = new int[graphEinlesen.length];
                  int t = 0;
                  
                  for(int j=0;j<graphEinlesen.length;j++)
                  {
                      behalten[j] = 0;
                  }
                  gesucht[anfangKnote]=1;
                  for(int i=0;i<graphEinlesen.length;i++)
                  {
                      GraphEinlesen gEinlesen = graphEinlesen[i];
                      if(gEinlesen.getVonKnotenNummer() == anfangKnote)
                      {
                          gesucht[gEinlesen.getNachKnotenNummer()] = 1;
                          behalten[t++] = gEinlesen.getNachKnotenNummer();
                      }
                  }
                  for(int b=0;b<graphEinlesen.length;b++)
                  {
                      if(behalten[b]!=0)
                          suchen(b);
                  }
              }
    }
    访问过的点好像不能保存    

回复列表 (共1个回复)

沙发

To LZ:

I answered your question here

[url]http://www.programfan.com/club/post-259703.html[/url]

You think I am wrong or not?

Thanks!

我来回复

您尚未登录,请登录后再回复。点此登录或注册