POJ 1364 King(差分約束) by zh

2021-06-16 09:23:31 字數 735 閱讀 6755

又是一道差分約束題,題意就沒看懂鬱悶……看半天沒看明白到底是哪幾個相加又習慣性的去看了題解,發現是把那個集合中的幾個元素加起來,其實這道題和之前做的那道差分約束題差不多,只是這道題沒***連通性,所以需要加入乙個超源點來保證圖的連通性,其實就是選出乙個點n+1為超源點,從這點向其他點連一條權值為0的邊,其實直接可以把所有點都加入佇列,並把dis陣列都初始化為0。這題的不等關係給的還是很清楚的,就是要處理一下符號的問題題目給的是大於或者小於,要-1以後轉換成小於等於建圖,spfa判斷是否存在環就行了。

#include #include #include #include #include using namespace std;

#define maxn 105

int n,m,dis[maxn],ind[maxn];

bool vis[maxn];

struct node

;vectorg[maxn];

bool spfa()

while(!q.empty())}}

}return true;

}int main()

scanf("%d",&m);

while(m--)

else

}if(spfa())

printf("lamentable kingdom\n");

else printf("successful conspiracy\n");

}}

poj 1364 King 差分約束

注意差分約束只能求 或 spfa判斷有無負權迴路。對於差分不等式,a b c 建一條 b 到 a 的權值為 c 的邊,求的是最短路,得到的是最大值 對於不等式 a b c 建一條 b 到 a 的權值為 c 的邊,求的是最長路,得到的是最小值。存在負環的話是無解,求不出最短路 dist 沒有得到更新 ...

poj 1364 King 差分約束

題目大意 有乙個序列。給定一些約束條件,格式為si ni oi ki,意思是序列中第si項到第si ni項的和 或 ki,oi表示 用 gt 表示 或 用 lt 表示 問這樣的序列是否存在。存在輸出 lamentable kingdomi 否則輸出 successful conspiracy 思路 ...

POJ1364 King 差分約束

鏈結 poj1364 題目大意 給你n和m,以及m個約束條件,對於每個約束條件給出si,ni,oi,ki,求是否有乙個n個元素的序列a能滿足這些約束條件。其中oi可以分別表示為gt 和lt 約束條件的定義為as i as i 1 as i ni ki 或asi asi 1 asi ni。解題報告 了...