• <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)  編輯 收藏 引用
            伊人久久一区二区三区无码| 影音先锋女人AV鲁色资源网久久| 欧美一区二区三区久久综合| 久久人人爽人人爽人人AV东京热| 国产成年无码久久久久毛片| 久久国产精品免费| 亚洲精品WWW久久久久久| 精品久久久无码人妻中文字幕| 久久丫精品国产亚洲av不卡| 久久精品免费观看| 国产精品久久婷婷六月丁香| 99久久无码一区人妻a黑| 三级片免费观看久久| 国产精品99久久免费观看| 亚洲国产成人久久综合一区77| AV色综合久久天堂AV色综合在| 亚洲国产成人精品女人久久久 | 999久久久国产精品| 日本精品久久久久影院日本| 浪潮AV色综合久久天堂| 久久久久久毛片免费看| 国内精品久久久久影院优| 久久久精品国产亚洲成人满18免费网站 | 久久婷婷五月综合色奶水99啪| 手机看片久久高清国产日韩| 久久777国产线看观看精品| 久久久久久精品免费看SSS| 91麻豆精品国产91久久久久久| 亚洲AV无码久久精品成人| 丁香色欲久久久久久综合网| 久久久99精品成人片中文字幕| 99久久婷婷国产综合亚洲| 99久久99久久精品国产片果冻| 一本色道久久综合狠狠躁| 一极黄色视频久久网站| 亚洲精品无码久久毛片| 日日狠狠久久偷偷色综合免费 | 久久精品国产亚洲精品2020| 亚洲精品无码久久久久| 中文精品久久久久人妻不卡| 亚洲AV日韩AV天堂久久|