呵~~~有趣的灵魂~~~
查看原帖
呵~~~有趣的灵魂~~~
154412
Gary818楼主2019/7/10 20:37

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;
}

焦急等待中……
求高人解答~~~

2019/7/10 20:37
加载中...