【題目描述】:
當排隊等候餵食時,奶牛喜歡和它們的朋友靠近些。fj 有n頭奶牛,編號從1到n,沿一條直線站著等候餵食。奶牛排在隊伍中的順序和它們的編號是相同的。因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。如果我們想象奶牛是站在一條數軸上的話,允許有兩頭或更多奶牛擁有相同的橫座標。一些奶牛相互間存有好感,它們希望兩者之間的距離不超過乙個給定的數l。另一方面,一些奶牛相互間非常反感,它們希望兩者間的距離不小於乙個給定的數d。給出ml條關於兩頭奶牛間有好感的描述,再給出md條關於兩頭奶牛間存有反感的描述。
你的工作是:如果不存在滿足要求的方案,輸出-1;如果1號奶牛和n號奶牛間的距離可以任意大,輸出-2;否則,計算出在滿足所有要求的情況下,1號奶牛和n號奶牛間可能的最大距離。
【輸入描述】:
第一行讀人三個整數n,ml,md。
接下去ml行每行有三個正整數a,b,d(1<=a#include#include#include#include#include#include#includeusing namespace std;
const int n=10005,m=500005,inf=1000000005;
int n,m,cnt,dis[n],vis[n],head[m],use[n],ml,md;
struct edgeedge[m];
void push(int u,int v,int w)
int spfa(int s)
q.push(s);
dis[s]=0;
vis[s]=1;
while(!q.empty())
vis[u]=0;
for(int i=head[u];i;i=edge[i].next)
}} }
if(dis[n]==inf)
return dis[n];
}int main()
for(int i=1;i<=md;i++)
for(int i=1;i<=n;++i)
int ans=spfa(0);
if(ans==-1||ans==-2)
printf("%d\n",spfa(1));
return 0;
}
281 排隊布局
當排隊等候餵食時,奶牛喜歡和它們的朋友靠近些。fj 有n頭奶牛,編號從1到n,沿一條直線站著等候餵食。奶牛排在隊伍中的順序和它們的編號是相同的。因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。如果我們想象奶牛是站在一條數軸上的話,允許有兩頭或更多奶牛擁有相同的橫座標。一些奶牛相互間存有好...
281 排隊布局
281.排隊布局 描述提交 自定義測試12 3 題目描述 當排隊等候餵食時,奶牛喜歡和它們的朋友靠近些。fj 有n頭奶牛,編號從1到n,沿一條直線站著等候餵食。奶牛排在隊伍中的順序和它們的編號是相同的。因為奶牛相當苗條,所以可能有兩頭或者更多奶牛站在同一位置上。如果我們想象奶牛是站在一條數軸上的話,...
AcWing 1170 排隊布局
本題同樣是差分約束的問題,要求 1 到 n 之間可能的最大的距離,這使得我們更加深刻的理解了差分約束的思想。在 acwing 1169 糖果裡,仔細的講解了差分約束的基本思想,以及求不等式組的最大解需要求最短路,求最小解需要求最長路,這裡不等式解的最大最小都是相對而言的。比如 a 2 a 1 1,a...