标签:ems ber poi iss memset table nim spfa sea
Time Limit: 2000MS | Memory Limit: 65536K | |
Total Submissions: 28852 | Accepted: 11131 |
Description
Input
Output
Sample Input
5
3 7 3
8 10 3
6 8 1
1 3 1
10 11 1
Sample Output
6
Source
#include <map> #include <set> #include <stack> #include<queue> #include<cstdio> #include<cstring> #include<iostream> #include<algorithm> using namespace std; #define eps 1e-15 #define MAXN 50005 #define INF 1000000007 #define MAX(a,b)(a>b?a:b) #define MIN(a,b)(a<b?a:b) int N,n,Max,Min; int head[MAXN],d[MAXN],vis[MAXN]; struct EDG{ int v,w,next; }edge[3*MAXN]; void AddEdge(int u,int v,int w){ edge[N].v=v;edge[N].w=w;edge[N].next=head[u];head[u]=N++; } void SPFA(){ for(int i=Min;i<=Max;i++) d[i]=-INF; d[Min]=0;queue<int>q;q.push(Min); while(!q.empty()){ int x=q.front();q.pop(); vis[x]=0; for(int e=head[x];e!=-1;e=edge[e].next) if(d[edge[e].v]<d[x]+edge[e].w){ d[edge[e].v]=d[x]+edge[e].w; if(!vis[edge[e].v]){ q.push(edge[e].v); vis[edge[e].v]=1; } } } } int main(){ while(scanf("%d", &n)!=EOF){ memset(vis,0,sizeof(vis)); memset(edge,0,sizeof(edge)); memset(head,-1,sizeof(head)); Min=INF;Max=-INF;N=0; for(int i=0;i<n;i++){ int u,v,w; scanf("%d%d%d",&u,&v,&w); AddEdge(u,v+1,w); Min=MIN(Min,u); Max=MAX(Max,v+1); } for(int i=Min;i<Max;i++){ AddEdge(i,i+1,0); AddEdge(i+1,i,-1); } SPFA(); printf("%d\n", d[Max]); } } /* 5 3 7 3 8 10 3 6 8 1 1 3 1 10 11 1 */
标签:ems ber poi iss memset table nim spfa sea
原文地址:https://www.cnblogs.com/cangT-Tlan/p/9092107.html