作业一 三国志
来源:互联网 发布:mac版teamviewer 编辑:程序博客网 时间:2024/04/27 14:30
0-1背包
#include<stdio.h>
#include<string.h>#include<algorithm>
#define INF 0x3f3f3f3f
#define N 110
using namespace std;
int map[N][N];
int vis[N];
int dis[N];
int d[N];
int dp[N*10000];
int z,n,m;
int dijst()
{
int min,i,j,k,sum;
memset(vis,0,sizeof(vis));
for(i=0;i<=n;i++)
dis[i]=map[0][i];
vis[0]=1;
for(j=1;j<=n;j++)
{
min=INF;
k=0;
for(i=0;i<=n;i++)
{
if(!vis[i]&&dis[i]<min)
{
k=i;
min=dis[i];
}
}
vis[k]=1;
for(i=0;i<=n;i++)
{
if(!vis[i]&&dis[k]+map[k][i]<dis[i])
dis[i]=dis[k]+map[k][i];
}
}
}
int main()
{
int t,a,b,c,i,j;
scanf("%d",&t);
while(t--)
{
memset(map,INF,sizeof(map));
scanf("%d%d%d",&z,&n,&m);
while(m--)
{
scanf("%d%d%d",&a,&b,&c);
if(c<map[a][b])
map[a][b]=map[b][a]=c;
}
for(i=1;i<=n;i++)
scanf("%d",&d[i]);
dijst();
memset(dp,0,sizeof(dp));
for(i=1;i<=n;i++)
{
for(j=z;j>=dis[i];j--)
{
dp[j]=max(dp[j],dp[j-dis[i]]+d[i]);
}
}
printf("%d\n",dp[z]);
}
return 0;
}
阅读全文
0 0
- 作业一 三国志
- 作业 三国志
- 作业 二十七 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 三国志
- 作业一
- 作业一
- 作业一
- 作业一
- 作业一
- 作业一
- Druid配置使用
- IT四书五经
- zynq7000 串口烧写petalinux工具生成的image.ub
- Linux netperf tool 介绍及使用方法
- 医疗机器人已经来临
- 作业一 三国志
- java丶 RestEasy简介
- logback日志使用说明
- 编程小小小小问题
- 认识 HTTP/2
- Android 开发中的 uid pid tid
- TCP 与UDP 的区别
- 用js写表格,删除行
- 【Java】Java的继承和多态详解