给出n头牛的身高,和m对关系 (a牛与b牛可以相互看见。即他们中间的牛都比他们矮)。已知最高的牛为第p头,身高为h。(1<=n,m<10000,1<=h<=10^6)
求每头牛的身高最大可能是多少
输入:
9 3 5 5
1 3
5 3
4 3
3 7
9 8
输出:
5
4
5
3
4
4
5
5
5
#include<bits/stdc++.h>
using namespace std;
map<pair<int,int>,bool> ex;
int d[10010],c[10010];
int main(){
int n,p,h,m;
cin>>n>>p>>h>>m;
for(int i=1;i<=m;i++){
int a,b;
cin>>a>>b;
if(a>b) swap(a,b);
if(ex[make_pair(a,b)]){
continue;
}
//[a+1,b-1]之间减1
d[a+1]-=1;
d[b]+=1;
ex[make_pair(a,b)]=true;
}
c[0]=h;
for(int i=1;i<=n;i++){
c[i]=c[i-1]+d[i];
cout<<c[i]<<endl;
}
return 0;
}