POJ 1201 SPFA 差分约束
来源:互联网 发布:淘宝客服一般提成多少 编辑:程序博客网 时间:2024/04/27 23:29
一道很蛋疼的题... 虽然很明显的差分约束,但是我就是那么错了。N久N久啊~~到现在我还是不知道为甚么!!!虽然很明显的是差分约束题,而且网上的资料乱七八糟的.... 看到了两条有用的结论:
1.求最大值,采用最短路径求法。
2.求最小值,采用最长路径求法。
但是!为什么啊?为什么??看来我还是对图论理解不深啊....
稍后继续想想这题吧....
#include<iostream>#include<queue>#define INF 0x7F7F7F7F#define MAXN 50005using namespace std;struct Node{ int v; int price; Node *next;}Edge[MAXN<<2],*ptr[MAXN];int N;int dist[MAXN];int edgeNum;int maxV,minV;void addEdge( int u,int v,int val ){ Node *p=&Edge[edgeNum++]; p->v=v; p->price=val; p->next=ptr[u]; ptr[u]=p;}bool spfa(){ bool used[MAXN]; int cnt[MAXN]; memset( used,0,sizeof(used) ); memset( cnt,0,sizeof(cnt) ); memset( dist,0xFF,sizeof(dist) ); queue<int>myQueue; while( !myQueue.empty() ) myQueue.pop(); dist[minV]=0; myQueue.push(minV); while( !myQueue.empty() ) { int u=myQueue.front(); myQueue.pop(); Node *p=ptr[u]; used[u]=false; while( p ) { if( dist[p->v]<dist[u]+p->price ) { dist[p->v]=dist[u]+p->price; if( !used[p->v] ) { used[p->v]=true; myQueue.push(p->v); if( ++cnt[p->v]>maxV ) return false; } } p=p->next; } } return true;}int main(){ while( scanf( "%d",&N )!=EOF ) { int i,j; int u,v,p; int edgeNum=0; for( i=0;i<MAXN;i++ ) ptr[i]=NULL; maxV=0; minV=INF; for( i=1;i<=N;i++ ) { scanf( "%d %d %d",&u,&v,&p ); if( v+1>maxV ) maxV=v+1; if( u<minV ) minV=u; addEdge(u,v+1,p); } for( i=minV;i<=maxV;i++ ) { addEdge( i,i+1,0 ); addEdge( i+1,i,-1 ); } spfa(); printf( "%d\n",dist[maxV] ); } return 0;}
- POJ 1201 Intervals 差分约束+spfa
- poj 1201 Intervals 差分约束 + spfa
- POJ 1201 SPFA 差分约束
- poj 1201-差分约束+spfa
- poj 1201 Intervals 差分约束+spfa
- poj 1201 差分约束+SPFA
- POJ 1201 差分约束+SPFA
- POJ 1201(差分约束+spfa)
- poj 1716 poj 1201 差分约束+SPFA
- poj 1201 Intervals(最短路+spfa+差分约束系统)
- POJ 1201 Intervals(差分约束-Spfa)
- POJ 1201/hdu 1384 Intervals【差分约束+SPFA】
- 【POJ 1201】Intervals(差分约束+SPFA)
- POJ 1201 Interval (Spfa 差分约束系统)
- POJ 3159 Candies 差分约束+spfa
- poj 3159 Candies 差分约束 + spfa
- poj 3169 差分约束 + spfa
- POJ 2983 SPFA 差分约束
- UML9种图——类图
- Android TimePicker 不能响应直接输入的问题
- 条码打印机的常用种类
- 使用内核链表实现的一个有头的循环链表,并使用其编写一个冒泡排序
- [DWR(Ajax)]DWR使用笔记
- POJ 1201 SPFA 差分约束
- DWR 入门与应用(一)
- 0.VC(ui)-WM_NCCALCSIZE计算客户区
- CoreData学习笔记(一)
- DWR实例
- Android推荐学习路线图
- SQL Server2000 安装:以前的某个程序安装已在安装计算机上创建挂起的文件操作
- C语言time.h函数库
- Winsock工作模型 同步 异步