提交记录 4231


用户 题目 状态 得分 用时 内存 语言 代码长度
Chuzyh noi18a. 【NOI2018】归程 Time Limit Exceeded 55 4 s 68960 KB C++ 2.41 KB
提交时间 评测时间
2018-07-19 09:04:24 2020-07-31 22:44:29
#include<cstdio>
#include<vector>
#include<cstring>
#include<queue>
#include<algorithm>

using namespace std;

int n,m,T,q,x,y,z,zz,k,s,v0,p0,lastans,v,p,nowans;
const int N=1000000,INF=1e9;
int dis[N],vis[N],f[N],fa[N],ans[N],out[N],FA[N][20],H[N];
struct link
{
	int top,fi[N],ne[N],la[N],to[N],l[N],h[N];
	inline void clear()
	{
		top=0,memset(fi,0,sizeof fi),memset(ne,0,sizeof ne),memset(la,0,sizeof la),memset(to,0,sizeof to),memset(l,0,sizeof l),memset(h,0,sizeof h);
	}
	inline void add(int x,int y,int z,int H)
	{
		top++,to[top]=y,l[top]=z,h[top]=H;
		if(fi[x]==0)fi[x]=top;else ne[la[x]]=top;
		la[x]=top;
	}
}L;
struct node
{
	int id,dis;
	bool operator < (const node &a) const {return a.dis < dis;}
};
priority_queue<node> que;
inline void DIJKSTRA()
{
    for(int i=1;i<=n;i++)dis[i]=INF,vis[i]=0;
    dis[1]=0;while(!que.empty())que.pop();
    node tmp;
    tmp.id=1;tmp.dis=0;que.push(tmp);
    while (!que.empty()) 
	{
        int now=que.top().id;
        que.pop();
        if (vis[now]) continue;
        vis[now]=true;
        for (int i=L.fi[now];i;i=L.ne[i]) 
		{
            if (!vis[L.to[i]]&&dis[L.to[i]]>dis[now]+L.l[i]) 
			{
                dis[L.to[i]]=dis[now]+L.l[i];
                tmp.id=L.to[i];tmp.dis=dis[L.to[i]];
                que.push(tmp);
            }
        }
    }
}
struct E{int x,y,l,h;}e[N];
inline bool cmp(E a,E b){return a.h>b.h;}
inline int ASK(int x){if(fa[x]==x)return x;else return fa[x]=ASK(fa[x]);}
inline int Read()
{
    int x=0,f=1;char c=getchar();
    while(c>'9'||c<'0') {if(c=='-') f=-1;c=getchar();}
    while(c>='0'&&c<='9') {x=x*10+c-'0'; c=getchar();}
    return x*f;
}
int main()
{
	T=Read();
	while(T--)
	{
		L.clear();lastans=0;n=Read(),m=Read();
		for(int i=1;i<=2*n;i++)fa[i]=i;
		for(int i=1;i<=m;i++)
		{
			x=Read(),y=Read(),z=Read(),zz=Read();
			e[i].x=x,e[i].y=y,e[i].l=z,e[i].h=zz;
			L.add(x,y,z,zz),L.add(y,x,z,zz);
		}
		DIJKSTRA();sort(e+1,e+1+m,cmp);int tot=n;
		for(int i=1;i<=n;i++)ans[i]=dis[i],H[i]=1e9;
		q=Read(),k=Read(),s=Read();
		for(int i=1;i<=m;i++)
		{
			int fx=ASK(e[i].x),fy=ASK(e[i].y);
			if(fx!=fy)
			{
				tot++;fa[tot]=tot;fa[fx]=fa[fy]=tot;ans[tot]=min(ans[fx],ans[fy]);FA[fx][0]=FA[fy][0]=tot;
				H[tot]=e[i].h;
			}
		}
		
		while(q--)
		{
			scanf("%d%d",&v0,&p0);
			v=(v0+k*lastans-1)%n+1;
			p=(p0+k*lastans)%(s+1);
			int now=v;lastans=1e9;
			while(H[now]>p)lastans=min(lastans,ans[now]),now=FA[now][0];
			printf("%d\n",lastans);
		}
	}
	return 0;
}

CompilationN/AN/ACompile OKScore: N/A

Testcase #14.357 ms22 MB + 952 KBAcceptedScore: 5

Testcase #24.333 ms22 MB + 960 KBAcceptedScore: 5

Testcase #34.464 ms22 MB + 972 KBAcceptedScore: 5

Testcase #44.663 ms22 MB + 996 KBAcceptedScore: 5

Testcase #57.87 ms23 MB + 308 KBAcceptedScore: 5

Testcase #62.248 s67 MB + 352 KBAcceptedScore: 5

Testcase #711.26 ms23 MB + 276 KBAcceptedScore: 5

Testcase #811.305 ms23 MB + 280 KBAcceptedScore: 5

Testcase #911.157 ms23 MB + 276 KBAcceptedScore: 5

Testcase #104 s62 MB + 804 KBTime Limit ExceededScore: 0

Testcase #114 s62 MB + 804 KBTime Limit ExceededScore: 0

Testcase #124 s55 MB + 32 KBTime Limit ExceededScore: 0

Testcase #134 s54 MB + 712 KBTime Limit ExceededScore: 0

Testcase #144 s55 MB + 28 KBTime Limit ExceededScore: 0

Testcase #1515.264 ms23 MB + 312 KBAcceptedScore: 5

Testcase #1615.345 ms23 MB + 316 KBAcceptedScore: 5

Testcase #174 s54 MB + 484 KBTime Limit ExceededScore: 0

Testcase #184 s54 MB + 672 KBTime Limit ExceededScore: 0

Testcase #194 s54 MB + 708 KBTime Limit ExceededScore: 0

Testcase #204 s54 MB + 704 KBTime Limit ExceededScore: 0


Judge Duck Online | 评测鸭在线
Server Time: 2026-04-13 22:20:32 | Loaded in 1 ms | Server Status
个人娱乐项目,仅供学习交流使用 | 捐赠