vector存图和add存图的差别我是真看不出来了
啊啊~怎么办,一晚上了
看在我经常看代码的份上,谁帮我瞅一下哦
万分感谢
add邻接表(正确的)
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int N=1000010;
struct time{
int u,v,w,next;
}a[N];
int dp[N],head[N];
int main(){
int n,m,r,i,j;
cin>>n>>m>>r;
for(i=1;i<=m;i++){
scanf("%d%d%d",&a[i].u,&a[i].v,&a[i].w);
a[i].next=head[a[i].v];
head[a[i].v]=i;
}
for(j=1;j<=n;j++){
dp[j]=dp[j-1];
for(i=head[j];i;i=a[i].next)
dp[j]=max(dp[j],dp[max(0,a[i].u-r)]+a[i].w);
}
cout<<dp[n]<<endl;
return 0;}
vector存图,样例输出0
#include <algorithm>
#include <cstdio>
#include <iostream>
#include <cstring>
#include <vector>
using namespace std;
int n,m,r;
inline int read(){
int x=0,w=1;
char ch=getchar();
for(;ch>'9'||ch<'0';ch=getchar()) if(ch=='-') w=-1;
for(;ch>='0'&&ch<='9';ch=getchar()) x=x*10+ch-'0';
return x*w;
}
const int maxn=1000010;
struct node{
int u,v,w;
}a[maxn];
vector<int> G[maxn];
int dp[maxn];
int main(){
cin>>n>>m>>r;
for(int i=1;i<=m;i++){
int u,v,w;
cin>>u>>v>>w;
G[u].push_back(v);
G[u][v]=w;
a[i].u=u,a[i].v=v,a[i].w=w;
}
for(int j=1;j<=n;j++){
dp[j]=dp[j-1];
for(int i=0;i<G[j].size();i++)
dp[j]=max(dp[j],dp[max(0,a[i].u-r)]+a[i].w);
}
cout<<dp[n]<<'\n';
return 0;
}
焦急等待中……
求高人解答~~~