zoukankan      html  css  js  c++  java
  • poj3411Paid Roads(dfs)

    链接

    想偷点懒用矩阵存 一直WA 后来看讨论说有重边改为邻接表 这题边可能走了不止一次 我设的最多两次可过

     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 #include<stdlib.h>
     6 using namespace std;
     7 #define INF 0xfffffff
     8 struct node
     9 {
    10     int u,v,w1,w2,d,next;
    11 }ed[22];
    12 int head[12];
    13 int n,m,p[12][12],ans;
    14 int vis[12],t;
    15 void init()
    16 {
    17     t = 0;
    18     memset(head,-1,sizeof(head));
    19 }
    20 void add(int u,int v,int w1,int w2,int d)
    21 {
    22     ed[t].u = u;
    23     ed[t].v = v;
    24     ed[t].w1 = w1;
    25     ed[t].w2 = w2;
    26     ed[t].d = d;
    27     ed[t].next = head[u];
    28     head[u] = t++;
    29 }
    30 void dfs(int u,int sum)
    31 {
    32     int i,s=sum;
    33     if(sum>ans)
    34     return ;
    35     if(u==n)
    36     {
    37         ans = sum;
    38         return ;
    39     }
    40     for(i = head[u] ; i!= -1; i = ed[i].next)
    41     {
    42         int v = ed[i].v;
    43         int tt = vis[v];
    44         if(p[u][v]<3)
    45         {
    46             vis[v] = 1;
    47             p[u][v]++;
    48             if(ed[i].d==u||ed[i].d==i||vis[ed[i].d])
    49             {
    50                 sum+=min(ed[i].w1,ed[i].w2);
    51             }
    52             else
    53             {
    54                 sum+=ed[i].w2;
    55             }
    56             dfs(v,sum);
    57             sum = s;
    58             p[u][v]--;
    59             vis[v] = tt;
    60         }
    61     }
    62 }
    63 int main()
    64 {
    65     int a,b,c,pp,r;
    66     while(scanf("%d%d",&n,&m)!=EOF)
    67     {
    68         init();
    69         memset(vis,0,sizeof(vis));
    70         memset(p,0,sizeof(p));
    71         ans = INF;
    72         while(m--)
    73         {
    74             scanf("%d%d%d%d%d",&a,&b,&c,&pp,&r);
    75             add(a,b,pp,r,c);
    76         }
    77         vis[1] = 1;
    78         dfs(1,0);
    79         if(ans!=INF)
    80         printf("%d
    ",ans);
    81         else
    82         puts("impossible");
    83     }
    84     return 0;
    85 }
    View Code
  • 相关阅读:
    魔方
    js烟花特效
    面试cookie
    扩展日期插件
    通过javascript实现1~100内能同时被2和3整除的数并生成如下表格
    用三或四个个div标签实现工字效果
    2015_WEB页面前端工程师_远程测题_东方蜘蛛_1
    js公有、私有、静态属性和方法的区别
    Docker libnetwork(CNM)设计简介
    kubernetes,Docker网络相关资料链接
  • 原文地址:https://www.cnblogs.com/shangyu/p/3298070.html
Copyright © 2011-2022 走看看