DFS-有向图-排涝问题

到了雨季农业生产的排涝就成了一个大问题。为了保证植物生长的顺利,某县政府决定投资为农田区建立一些排涝渠,将农田里多余的水排到小溪里。

输入第1行包括用一个空格分隔的两个整数N和M,N表示县政府专家设计的排涝渠的数量,M是排涝渠交叉点的数量。其中第一个交点是农田区,交点M是小溪(0≤N≤200,2≤M≤200)。第2行-第N+1行中每行有三个用空格分隔的整数,Si、Ei和Ci。Si和Ei说明了排涝渠的端点,多余的水自Si流向Ei;Ci是这个第i条排涝渠的最大排水量。(1≤Si,Ei≤M,0≤Ci≤10000000)

输出只有一个,为规划好的排涝渠的最大流量。
样例输入

5 4
1 2 40
1 4 20
2 4 20
2 3 30
3 4 10

样例输出

50

代码:


import java.util.Scanner;

public class PaiLao {
  static int n;
  static int [][]map;
  static int m;
  static int way[];
  static boolean isvisited[];
  static int MAX=Integer.MAX_VALUE;
  static int sum;
    public static void main(String[] args) {
Scanner  scanner=new Scanner(System.in);
n=scanner.nextInt();
m=scanner.nextInt();
map=new int [n+1][n+1];
way=new int[n+1];
isvisited=new boolean [n+1];

//初始化map
for(int i=1;i<=m;i++)
{
    for(int j=1;j<=m;j++)
    {
      map[i][j]=MAX;
    }
}

for(int i=1;i<=n;i++)
{
        int a=scanner.nextInt();
        int b=scanner.nextInt();
        int c=scanner.nextInt();
        map[a][b]=c;
}
dfs(1,1);

System.out.println(sum);


    }
    private static void dfs(int u,int i) {
        way[i]=u;//记录每一步所走的节点
        isvisited[u]=true;
        if(u==m)
        {
//          for(int j=1;j<=i;j++)
//          {
//              System.out.print(way[j]+" ");
//          }
//          System.out.println();

            int min=MAX;
            for(int j=1;j<i;j++)
            {
                int a=way[j];
                int b=way[j+1];
                if(min>map[a][b])
                    min=map[a][b];
            }
            sum+=min;
        }
        else{
            for(int j=1;j<=m;j++)//寻找下一个可到达的点
            {

                if(isvisited[j]==true||map[u][j]==MAX)//j点已经访问过或者j点不能到达
                    continue;
                dfs(j, i+1);
                isvisited[j]=false;
            }
        }


    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值