QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#692802#5520. Distance ParitiesdiduWA 1ms3756kbC++143.1kb2024-10-31 15:03:522024-10-31 15:03:53

Judging History

你现在查看的是最新测评结果

  • [2024-10-31 15:03:53]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:3756kb
  • [2024-10-31 15:03:52]
  • 提交

answer

#include<bits/stdc++.h>

#define pb push_back
#define fir first
#define sec second
#define ll long long
using namespace std;

const int MAXN = 5e2+10;
const int INF = 1e9+10;

int n,vis[MAXN],dis[MAXN];
int a[MAXN][MAXN],edg[MAXN][MAXN];//邻接矩阵 

int main(){
	//freopen("bridge.in","r",stdin);
	//freopen("bridge.out","w",stdout);
	
	int Tc;cin >> Tc;
	while(Tc--){
		cin >> n;
		for(int i = 1;i <= n;i++) for(int j = 1;j <= n;j++){
			char x; cin >> x; a[i][j] = ( x == '1' ); edg[i][j] = 0;
		}
		
		for(int i = 1;i <= n;i++) vis[i] = 0;
		vector< pair<int,int> > ans;
		for(int i = 1;i <= n;i++){
			for(int j = i+1;j <= n;j++){
				if(a[i][j]){
					//cout << i << " " << j << endl; 
					vis[j] = 1; ans.push_back(make_pair(i,j));
					edg[i][j] = edg[j][i] = 1; 
				}
			}
    	}
    	
		bool fl = 1;
		for(int s = 1;s <= n && fl;s++){
			for(int i = 1;i <= n;i++) dis[i] = INF;
			dis[s] = 0; queue<int> q;q.push(s);
			while(!q.empty()){
				int u = q.front(); q.pop();
				//cout << u << " " << dis[u] << endl;
				for(int v = 1;v <= n;v++){
					if(!edg[u][v]) continue;
					if(dis[v] == INF) dis[v] = dis[u]+1,q.push(v);
				}
			}for(int i = 1;i <= n && fl;i++) if(dis[i] == INF || (dis[i]&1) != (a[s][i]&1) ){
				printf("Track Lost\n"); fl = 0;
			}
		}
		if(!fl) continue;
		printf("Pure Memory\n%d\n",(int)ans.size());
		for(int i = 0;i < ans.size();i++) cout << ans[i].fir << " " << ans[i].sec << endl;
	} return 0;
}


/*
#include<bits/stdc++.h>

#define mkp make_pair
#define fir first
#define sec second
#define ll long long
#define pb push_back
using namespace std;

const int INF = 1e9;
const int MAXN = 500+10;

int a[MAXN][MAXN],n,cnt;
int dis[MAXN][MAXN];

vector<int> vct[MAXN];
pair<int,int> ans[MAXN*MAXN];

void bfs(int s){
	for(int i = 1;i <= n;i++) dis[s][i] = INF;
	queue<int> q; dis[s][s] = 0; q.push(s);
	while(!q.empty()){
		int u = q.front(); q.pop();
		for(int v: vct[u]){
			if(dis[s][v] == INF)dis[s][v] = dis[s][u]+1,q.push(v);
		}
	}return ;
}

void init(){ for(int i = 1;i <= n;i++) vct[i].clear(); cnt = 0; return ;}
char str[MAXN][MAXN];

int main(){
	
	freopen("bridge.in","r",stdin);
	freopen("bridge.out","w",stdout);
	int Tc;scanf("%d",&Tc);
	while(Tc--){
		scanf("%d",&n); init(); bool fl = 1;
		for(int i = 1;i <= n;i++){
			scanf("%s",(str[i]+1));
			for(int j = 1;j <= n;j++){
				a[i][j] = (int)(str[i][j]-'0');
				if(a[i][j] == 1) vct[i].pb(j);
				if(i > j){
					ans[++cnt] = mkp(i,j);
					if( (a[i][j] && !a[j][i]) || (!a[i][j] && a[j][i]) ) fl = 0;
				}
			}
		}
		if(!fl){ printf("Track Lost\n"); continue; }
		for(int i = 1;i <= n;i++) bfs(i);
		
		for(int i = 1;i <= n && fl;i++){
			for(int j = 1;j <= n && fl;j++){
				if(i == j && a[i][j] == 1)fl = 0;
				if(dis[i][j] == INF) fl = 0;
				if( ((dis[i][j] & 1) && a[i][j] != 1) || (!(dis[i][j] & 1) && a[i][j] != 0) )fl = 0;
			}
		}
		if(!fl){ printf("Track Lost\n"); continue; }
		printf("Pure Memory\n");
		printf("%d\n",cnt);
		for(int i = 1;i <= cnt;i++) printf("%d %d\n",ans[i].fir,ans[i].sec);
	} return 0;
}*/

詳細信息

Test #1:

score: 0
Wrong Answer
time: 1ms
memory: 3756kb

input:

3
3
011
101
110
4
0100
1000
0001
0010
5
01010
10101
01010
10101
01010

output:

Pure Memory
3
1 2
1 3
2 3
Track Lost
Pure Memory
6
1 2
1 4
2 3
2 5
3 4
4 5

result:

wrong answer Token parameter [name=yes/no] equals to "Pure", doesn't correspond to pattern "[yY][eE][sS]|[nN][oO]" (test case 1)