社区讨论
mxqz
UVA1723Intervals参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @lo1h6g6o
- 此快照首次捕获于
- 2023/10/22 20:59 2 年前
- 此快照最后确认于
- 2023/11/02 21:32 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,t,vis[500010],to[500010],head[500010],nxt[500010],edge[500010],cnt,dist[500010];
queue<int>q;
void add(int from,int t,int dis)
{
to[++cnt]=t;
edge[cnt]=dis;
nxt[cnt]=head[from];
head[from]=cnt;
}
void SPFA()
{
memset(dist,-1,sizeof(dist));
memset(vis,0,sizeof(vis));
dist[0]=0;
vis[0]=1;
q.push(0);
while(q.size())
{
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i;i=nxt[i])
{
int v=to[i],w=edge[i];
if(dist[v]<dist[u]+w)
{
dist[v]=dist[u]+w;
if(vis[v]==0)
{
vis[v]=1;
q.push(v);
}
}
}
}
}
int main()
{
scanf("%d\n",&t);
scanf("\n");
for(int q=1;q<=t;q++)
{
cnt=0;
int maxx=-1;
memset(to,0,sizeof(to));
memset(head,0,sizeof(head));
memset(nxt,0,sizeof(nxt));
memset(edge,0,sizeof(edge));
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
int u,v,w;
cin>>u>>v>>w;
add(u,v+1,w);
maxx=max(maxx,v);
}
for(int i=1;i<=maxx+1;i++)
{
add(i,i-1,-1);
add(i-1,i,0);
}
SPFA();
printf("%d",dist[maxx+1]);
if(q<t)cout<<endl;
}
return 0;
}
样例已过,调得快疯了。
回复
共 2 条回复,欢迎继续交流。
正在加载回复...