POJ 3159-Candies(差分約束系統-SPFA+鄰接表)
Time Limit: 1500MS | Memory Limit: 131072K | |
Total Submissions: 31137 | Accepted: 8669 |
Description
During the kindergarten days, flymouse was the monitor of his class. Occasionally the head-teacher brought the kids of flymouse’s class a large bag of candies and had flymouse distribute them. All the kids loved candies very much and often compared the numbers of candies they got with others. A kid A could had the idea that though it might be the case that another kid B was better than him in some aspect and therefore had a reason for deserving more candies than he did, he should never get a certain number of candies fewer than B did no matter how many candies he actually got, otherwise he would feel dissatisfied and go to the head-teacher to complain about flymouse’s biased distribution.
snoopy shared class with flymouse at that time. flymouse always compared the number of his candies with that of snoopy’s. He wanted to make the difference between the numbers as large as possible while keeping every kid satisfied. Now he had just got another bag of candies from the head-teacher, what was the largest difference he could make out of it?
Input
The input contains a single test cases. The test cases starts with a line with two integers N and M not exceeding 30 000 and 150 000 respectively. N is the number of kids in the class and the kids were numbered 1 through N. snoopy and flymouse were always numbered 1 and N. Then follow M lines each holding three integers A, B and c in order, meaning that kid A believed that kid B should never get over c candies more than he did.
Output
Output one line with only the largest difference desired. The difference is guaranteed to be finite.
Sample Input
2 2 1 2 5 2 1 4
Sample Output
5
Hint
Source
題目意思:
解題思路:
把STL的queue改成手寫的一個陣列;
把多餘的初始化全部刪掉;
計算src=1時的dis[n]……
1500MS險過……(。˘•ε•˘。)
#include <iostream>
#include <cstdio>
#include <cstring>
#include <vector>
#include <queue>
#include <iomanip>
#include <algorithm>
#define MAXN 200010
#define INF 0xfffffff
using namespace std;
struct ArcNode
{
int to;
int weight;
ArcNode *next;
};
int Q[MAXN];//佇列中的節點為頂點序號
int n;//頂點個數
ArcNode * List[MAXN];//每個頂點的邊連結串列表頭指標
int inq[MAXN];//每個頂點是否在佇列中的標誌
int dist[MAXN];
int cnt[MAXN];
void SPFA(int src)
{
int top=0;
memset(inq,0,sizeof(inq));
int i,u;//u為佇列頭頂點序號
ArcNode * temp;
for(i=1; i<=n; ++i)//初始化
dist[i]=INF;
dist[src]=0;
++inq[src];
Q[top++]=src;
while(top>=0)
{
u=Q[--top];
--inq[u];
temp=List[u];
while(temp!=NULL)
{
int v=temp->to;
if(dist[v]>dist[u]+temp->weight)
{
dist[v]=dist[u]+temp->weight;
if(!inq[v])
{
Q[top++]=v;
++inq[v];
}
}
temp=temp->next;
}
}
}
int main()
{
#ifdef ONLINE_JUDGE
#else
freopen("G:/cbx/read.txt","r",stdin);
//freopen("G:/cbx/out.txt","w",stdout);
#endif
int m;
scanf("%d%d",&n,&m);
memset(List,0,sizeof(List));
ArcNode *temp;
while(m--)
{
int u,v,w;
scanf("%d%d%d",&u,&v,&w);
temp=new ArcNode;
temp->to=v;//構造鄰接表
temp->weight=w;
temp->next=NULL;
if(List[u]==NULL) List[u]=temp;
else
{
temp->next=List[u];
List[u]=temp;
}
}
SPFA(1);//源點1
printf("%d\n",dist[n]);
return 0;
}
相關文章
- POJ 2983-Is the Information Reliable?(差分約束系統)ORM
- POJ 1364-King(差分約束系統)
- 差分約束系統+poj1201
- 淺談差分約束系統
- 差分約束系統詳解
- POJ 3169-Layout(差分約束系統-入門裸題)
- POJ 3169(Bellman-Ford演算法,差分約束系統)演算法
- 差分約束
- 演算法學習之路|差分約束系統演算法
- 鄰接表
- 差分約束學習筆記筆記
- 差分約束的一些理解
- uva 11478 最短路徑問題(負環,差分約束系統)
- [演算法學習筆記] 差分約束演算法筆記
- 差分約束系統+SPFA/Bellman判斷負權迴路+uva515
- 圖的儲存結構——鄰接矩陣與鄰接表矩陣
- 分層資料 Hierarchical Data 探索 (2.鄰接表模型)模型
- 第6章 圖的學習總結(鄰接矩陣&鄰接表)矩陣
- C#實現圖的鄰接矩陣和鄰接表結構C#矩陣
- Day2 尤拉路,拓撲排序和差分約束排序
- 分層資料 Hierarchical Data 探索 (2.鄰接表模型) 無限極分類模型
- Atcoder ABC 216 G 01Sequence 題解 [ 藍 ] [ 差分約束 ]
- 在MySQL中管理分層資料---鄰接表模型和巢狀集模型MySql模型巢狀
- Javaweb-約束的分類JavaWeb
- 建表時的約束的語法在informix和oracle中的差異ORMOracle
- 【SQL】15 SQL 約束(Constraints)、NOT NULL 約束、UNIQUE 約束、PRIMARY KEY 約束、FOREIGN KEY 約束、CHECK 約束、DEFAULT約束SQLAINull
- 時序分析:基礎知識整理(三)差分轉單端的約束等
- 14、圖-鄰接矩陣矩陣
- 坐在馬桶上看演算法(9):巧妙的鄰接表演算法
- 5_MySQL 表的欄位約束MySql
- POJ 2778-DNA Sequence(AC自動機+構建鄰接矩陣+矩陣快速冪)矩陣
- 鄰接矩陣、度矩陣矩陣
- Javaweb-約束-外來鍵約束JavaWeb
- dijkstra迪傑斯特拉演算法(鄰接表法)演算法
- 資料庫系統之實體完整性約束資料庫
- 查詢oracle表的資訊(表,欄位,約束,索引)Oracle索引
- MySQL學習筆記之資料定義表約束,分頁方法總結MySql筆記
- Oracle定義約束 外來鍵約束Oracle