SP116来的,但是挂了(
  • 板块UVA1723 Intervals
  • 楼主mlvx
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/5/28 16:43
  • 上次更新2024/5/28 20:03:51
查看原帖
SP116来的,但是挂了(
1248522
mlvx楼主2024/5/28 16:43
#include<bits/stdc++.h>
using namespace std;
const int N=1e5+100,M=2e5+100,inf=1e9;
int T,n,u,v,w,cnt,head[N],vis[N],dis[N],tot[N];
struct edge{int nxt,to,dis;}e[M<<1];
void add(int a,int b,int c){++cnt,e[cnt].to=b,e[cnt].nxt=head[a],e[cnt].dis=c,head[a]=cnt;}
int spfa(int s){
    queue<int>q;
    for(int i=1;i<=n;i++)dis[i]=-inf,vis[i]=0,tot[i]=0;
    q.push(s),vis[s]=1,dis[s]=0;
    while(!q.empty()){
        int x=q.front();q.pop();
        vis[x]=0;
        for(int i=head[x];i;i=e[i].nxt){
            int y=e[i].to;
            if(dis[y]<dis[x]+e[i].dis){
                dis[y]=dis[x]+e[i].dis;
                if(!vis[y]){
                    q.push(y),vis[y]=1,tot[y]++;
                    if(tot[y]==n+1)return 1;
                }
            }
        }
    }return 0;
}int main(){
	cin>>T;
	while(T--){
		cnt=0,memset(e,0,sizeof 0),memset(head,0,sizeof head);
		int mn=1e9,mx=0;
		cin>>n;
		for(int i=1;i<=n;i++)cin>>u>>v>>w,add(u,v+1,w),mn=min(mn,u),mx=max(mx,v+1);
		for(int i=mn;i<mx;i++)add(i,i+1,0),add(i+1,i,-1);
		spfa(mn),cout<<dis[mx];if(T)puts("");
	}return 0;
}
2024/5/28 16:43
加载中...