• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-65  評論-6  文章-0  trackbacks-0
            /*46MS*/
              1 /*
              2 Author:    Leo.W
              3 Descriptipn:  最短路問題+01背包,好題啊。
              4 How to Do:  將路程即耗油量視作背包容積,取得的電量視作價值,那么就是給定價值,求滿足這一價值的最小容積。
              5             先求出自base點到其他各點的最短距離,再以此為基礎做0-1背包。
              6   */
              7 
              8 #include <cstdio>
              9 #include <string.h>
             10 #define MAXSIZE 101
             11 #define IMAX 10050
             12 char ch;
             13 int n,m;
             14 int dis[MAXSIZE][MAXSIZE];
             15 int cost[MAXSIZE];
             16 int value[MAXSIZE];
             17 int visited[MAXSIZE];
             18 int dp[IMAX];
             19 
             20 void dijiastra(){
             21     int i,j,pos;
             22     memset(visited,1,sizeof(visited));
             23     for(i=1;i<=n;i++)
             24         cost[i]=dis[0][i];
             25     for(i=1;i<=n;i++){
             26         int MIN=IMAX;
             27         for(j=1;j<=n;j++)
             28             if(visited[j]&&cost[j]<MIN){
             29                 MIN=cost[j];
             30                 pos=j;
             31             }
             32         if(MIN==IMAX)    break;
             33         visited[pos]=0;
             34         for(j=1;j<=n;j++){
             35             if(visited[j]&&cost[j]>cost[pos]+dis[pos][j])
             36                 cost[j]=cost[pos]+dis[pos][j];
             37         }
             38     }
             39 }
             40 inline void scan(int &x){
             41     while(ch=getchar(),ch<'0'||ch>'9');x=ch-'0';
             42     while(ch=getchar(),ch>='0'&&ch<='9')x=10*x+ch-'0';
             43 }
             44 inline void init(){
             45     for(int i=0;i<=n;i++){
             46         for(int j=0;j<=n;j++)
             47             if(i==j)
             48                 dis[i][j]=0;
             49             else
             50                 dis[i][j]=IMAX;
             51     }
             52     memset(dp,0,sizeof(dp));
             53 }
             54 int main(){
             55     #ifdef ONLINE_JUDGE
             56     #else
             57         freopen("in.txt","r",stdin);
             58     #endif
             59     int t;
             60     scan(t);
             61     while (t--){
             62         scan(n);
             63         scan(m);
             64         init();
             65         int i,j;
             66         for(i=0;i<m;i++){
             67             int a,b,c;
             68             scan(a);
             69             scan(b);
             70             scan(c);
             71             if(dis[a][b]>c)
             72                 dis[a][b]=dis[b][a]=c;
             73         }
             74         for(i=1;i<=n;i++)
             75             scan(value[i]);
             76         dijiastra();
             77         int v=0,c=0,flag=0;
             78         for(i=1;i<=n;i++){
             79             v+=value[i];
             80             c+=cost[i];
             81             if(cost[i]==IMAX){
             82                 flag=1;
             83                 break;
             84             }        
             85         }
             86         if(flag){
             87             puts("impossible");
             88             continue;
             89         }
             90         for(i=1;i<=n;i++)
             91             for(j=c;j>=cost[i];j--){
             92                 if(dp[j-cost[i]]+value[i]>dp[j])
             93                     dp[j]=dp[j-cost[i]]+value[i];
             94             }
             95         int target=v/2;
             96         for(j=1;j<=c;j++)
             97             if(dp[j]>target)
             98                 break;
             99         printf("%d\n",j);
            100     }
            101     return 0;
            102 }
            103 
            posted on 2012-03-23 17:16 Leo.W 閱讀(195) 評論(0)  編輯 收藏 引用
            久久精品人妻一区二区三区| 久久久久久九九99精品| 国产一区二区精品久久凹凸| 狠狠久久综合伊人不卡| 一级做a爰片久久毛片看看| 久久精品亚洲日本波多野结衣| 久久成人精品视频| 免费精品久久天干天干| 婷婷综合久久狠狠色99h| 久久婷婷午色综合夜啪| 久久婷婷综合中文字幕| 伊人久久大香线焦AV综合影院| 久久九九亚洲精品| 久久香蕉国产线看观看精品yw| 久久精品成人欧美大片| 久久99国产精品久久| 国产欧美久久久精品影院| 国产精品丝袜久久久久久不卡| 一本一本久久aa综合精品| 久久强奷乱码老熟女| 国产亚洲精品美女久久久| 国产一区二区久久久| 久久久精品波多野结衣| 久久精品视频免费| 国产精品久久网| 久久99热只有频精品8| 色综合久久中文字幕无码 | 精品一二三区久久aaa片| 久久精品国产99久久久香蕉| 久久久国产精品福利免费| 国产午夜福利精品久久2021| 久久久久亚洲精品天堂| 性色欲网站人妻丰满中文久久不卡 | 久久国产成人精品国产成人亚洲| 久久久久久亚洲精品成人| 欧美伊人久久大香线蕉综合 | 久久人人爽人人爽AV片| 国产精品嫩草影院久久| 久久综合视频网站| 伊人久久大香线蕉成人| 亚洲αv久久久噜噜噜噜噜|