将点(xi,wi)看成区间(xi-wi,xi+wi),那么两个点有连边当且仅当两个区间没有公共点。删去所有包含其它区间的区间,在剩下的区间中每次贪心取一个能取的坐标最小的区间。
#includeusing namespace std;int n;struct line{ int l,r;}x[200010];inline bool cmp(line a,line b){ return a.l =j){ j=x[i].r; k++; } printf("%d\n",k); return 0;}