第五周__有向图中反向图构造

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"); 
     }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值