请问这道题的编译系统是不是出问题了?(题解上的CODE都是全WA)
查看原帖
请问这道题的编译系统是不是出问题了?(题解上的CODE都是全WA)
216909
Viktley楼主2021/1/22 21:59

不知道为什么,窝在别的网站上码了CODE,

想顺便再嫖点估值,但是不知道为什么

自己和题解上的代码都全WA了 \fad

#include <bits/stdc++.h> 
using namespace std;
const int N= 251010;
struct node
{
	int x, y, z, next;
} edge[N << 2];  
int t, n, m, cnt, head[2 * N], dis[N], ed;
bool vis[N];
char s[N];
deque <int> q;
void add(int x, int y, int z) {edge[++cnt] = (node){x, y, z, head[x]}, head[x] = cnt;}
void bfs()
{
	q.push_back(1);
	memset(vis, 0, sizeof(vis));
	memset(dis, 127 / 3, sizeof(dis));
	dis[1] = 0;
	while(q.size())
	{
		int u = q.front(); q.pop_front(); vis[u] = 0;
		for(int i = head[u]; i; i = edge[i].next)
		{
			int v = edge[i].y;
			if(dis[u] + edge[i].z < dis[v])
			{
				dis[v] = dis[u] + edge[i].z;
				if(!vis[v])
				{
					vis[v] = 1;
					if(!edge[i].z) q.push_front(v);
					else q.push_back(v);	
				}
			}
		}
	}
}
int main()
{
	scanf("%d", &t);
	while(t--)
	{
		scanf("%d%d", &n, &m);
		memset(head, 0, sizeof(head)), cnt = 0;
		for(int i = 1; i <= n; i++) 
		{
			scanf("%s", s + 1);
			for(int j = 1; j <= m; j++)
			{
				if(s[j] == '/')
				{
					add(j + 1 + (i - 1) * (m + 1) , j + i * (m + 1) , 0);
					add(j + i * (m + 1) , j + 1 + (i - 1) * (m + 1) , 0);
                    add(j + (i - 1) * (m + 1) , j + 1 + i * (m + 1) , 1);
                    add(j + 1 + i * (m + 1) , j + (i - 1) * (m + 1) , 1);
				}
				else
				{
					add(j + 1 + (i - 1) * (m + 1) , j + i * (m + 1) , 1);
					add(j + i * (m + 1) , j + 1 + (i - 1) * (m + 1) , 1);
                    add(j + (i - 1) * (m + 1) , j + 1 + i * (m + 1) , 0);
                    add(j + 1 + i * (m + 1) , j + (i - 1) * (m + 1) , 0);
				}
			}
		}
		ed = (n + 1) * (m + 1), bfs();
		if(dis[ed] == 707406378) printf("NO SOLUTION\n");
		else printf("%d\n", dis[ed]);
	}
	return 0;
}
2021/1/22 21:59
加载中...