QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#54969 | #4234. Tic Tac Toe Counting | KING_UT# | Compile Error | / | / | C++20 | 6.0kb | 2022-10-11 19:31:42 | 2022-10-11 19:31:44 |
Judging History
This is the latest submission verdict.
- [2023-08-10 23:21:45]
- System Update: QOJ starts to keep a history of the judgings of all the submissions.
- [2022-10-11 19:31:44]
- Judged
- Verdict: Compile Error
- Time: 0ms
- Memory: 0kb
- [2022-10-11 19:31:42]
- Submitted
answer
#include <bits/stdc++.h>
using namespace std;
#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define repn(i,b) rng(i,1,b+1)
#define gnr(i,a,b) for(int i=int(b)-1;i>=int(a);i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define a first
#define b second
#define eb emplace_back
template<class t>using vc=vector<t>;
template<class t, class u>bool chmin(t &a, u b){
if(a > b){ a = b; return true;}
else return false;
}
const int inf = 100000000;
int n, p, m;
vc<int>A;
bool in[55];
vc<pair<int,char>>edge[55];
int dd[55][55];
#define mp make_pair
using P=pair<int,int>;
using Q=pair<int,pair<int,P>>;
int dist[55][55][27];
void slv(){
cin>>n>>p>>m;
rep(i,p){
int v;cin>>v;
A.pb(v);
in[v] = true;
}
rep(a,55)rep(b,55)if(a!=b)dd[a][b]=inf;
rep(i,m){
int u,v;string s;
cin>>u>>s>>v;
edge[u].eb(v, s[0]);
dd[u][v] = 1;
}
repn(k,n)repn(i,n)repn(j,n)chmin(dd[i][j],dd[i][k]+dd[k][j]);
auto iscap=[](char c){
return 'A'<=c and c<='Z';
};
rep(a,55)rep(c,55)rep(d,27)dist[a][c][d]=inf;
priority_queue<Q,vc<Q>,greater<Q>>que;
repn(i,n){
if(edge[i].size() < 2) continue;
rep(j, edge[i].size()){
rep(k, edge[i].size()){
if(j==k)continue;
char c = edge[i][j].b;
int to = edge[i][j].a;
char c2 = edge[i][k].b;
int to2 = edge[i][k].a;
if(iscap(c) == iscap(c2)){
dist[to][to2][26] = dd[1][i]*2+2;
que.push(mp(dist[to][to2][26], mp(to,mp(to2,26))));
}
else if(iscap(c)){
dist[to][to2][c-'A'] = dd[1][i]*2+2;
que.push(mp(dist[to][to2][c-'A'], mp(to,mp(to2,c-'A'))));
}
}
}
}
while(!que.empty()){
auto qq = que.top(); que.pop();
int cs = qq.a;
int u = qq.b.a;
int v = qq.b.b.a;
int t = qq.b.b.b;
cout<<u<<" "<<v<<" "<<t<<" "<<cs<<endl;
if(dist[u][v][t] != cs) continue;
for(auto to:edge[v]){
int nxt = to.a;
char c = to.b;
if(!iscap(c)){
if(dist[u][nxt][t] > cs+1){
dist[u][nxt][t] = cs+1;
que.emplace(cs+1, mp(u,mp(nxt, t)));
}
}
else {
int uu, vv, tt;
if(t == 26) {
uu = nxt, vv = u, tt = c-'A';
}
else if(t == c-'A') uu=u,vv=nxt,tt=26;
else continue;
if(dist[uu][vv][tt] > cs+1){
dist[uu][vv][tt] = cs+1;
que.emplace(cs+1, mp(uu, mp(vv,tt)));
}
}
}
if(t == 26){
for(auto to:edge[u]){
int nxt = to.a;
char c = to.b;
if(!iscap(c)){
if(dist[nxt][v][t] > cs+1){
dist[nxt][v][t] = cs+1;
que.emplace(cs+1, mp(nxt,mp(v, t)));
}
}
else {
int uu, vv, tt;
{
uu = nxt,vv = v, tt = c-'A';
}
if(dist[uu][vv][tt] > cs+1){
dist[uu][vv][tt] = cs+1;
que.emplace(cs+1, mp(uu, mp(vv,tt)));
}
}
}
}
}
int ans=inf;
repn(i,n)repn(j,n)if(in[i] and in[j]){
chmin(ans,dist[i][j][26]);
}
if(ans > inf/2) ans = -1;
cout<<ans<<endl;
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(0);
cout<<fixed<<setprecision(20);
slv();
}
/*
* #include <bits/stdc++.h>
using namespace std;
#define rng(i,a,b) for(int i=int(a);i<int(b);i++)
#define rep(i,b) rng(i,0,b)
#define repn(i,b) rng(i,1,b+1)
#define gnr(i,a,b) for(int i=int(b)-1;i>=int(a);i--)
#define per(i,b) gnr(i,0,b)
#define pb push_back
#define a first
#define b second
#define eb emplace_back
template<class t>using vc=vector<t>;
template<class t, class u>bool chmin(t &a, u b){
if(a > b){ a = b; return true;}
else return false;
}
const int inf = 100000000;
int n, p, m;
vc<int>A;
bool in[55];
vc<pair<int,char>>edge[55];
int dd[55][55];
#define mp make_pair
using P=pair<int,int>;
using Q=pair<int,pair<int,P>>;
int dist[55][55][27];
void slv(){
cin>>n>>p>>m;
rep(i,p){
int v;cin>>v;
A.pb(v);
in[v] = true;
}
rep(a,55)rep(b,55)if(a!=b)dd[a][b]=inf;
rep(i,m){
int u,v;string s;
cin>>u>>s>>v;
edge[u].eb(v, s[0]);
dd[u][v] = 1;
}
repn(k,n)repn(i,n)repn(j,n)chmin(dd[i][j],dd[i][k]+dd[k][j]);
auto iscap=[](char c){
return 'A'<=c and c<='Z';
};
rep(a,55)rep(c,55)rep(d,27)dist[a][c][d]=inf;
priority_queue<Q,vc<Q>,greater<Q>>que;
repn(i,n){
if(edge[i].size() < 2) continue;
rep(j, edge[i].size()){
rep(k, edge[i].size()){
if(j==k)continue;
char c = edge[i][j].b;
int to = edge[i][j].a;
char c2 = edge[i][k].b;
int to2 = edge[i][k].a;
if(iscap(c) == iscap(c2)){
dist[to][to2][26] = dd[1][i]*2+2;
que.push(mp(dist[to][to2][26], mp(to,mp(to2,26))));
}
else if(iscap(c)){
dist[to][to2][c-'A'] = dd[1][i]*2+2;
que.push(mp(dist[to][to2][c-'A'], mp(to,mp(to2,c-'A'))));
}
}
}
}
while(!que.empty()){
auto qq = que.top(); que.pop();
int cs = qq.a;
int u = qq.b.a;
int v = qq.b.b.a;
int t = qq.b.b.b;
cout<<u<<" "<<v<<" "<<t<<" "<<cs<<endl;
if(dist[u][v][t] != cs) continue;
for(auto to:edge[v]){
int nxt = to.a;
char c = to.b;
if(!iscap(c)){
if(dist[u][nxt][t] > cs+1){
dist[u][nxt][t] = cs+1;
que.emplace(cs+1, mp(u,mp(nxt, t)));
}
}
else {
int uu, vv, tt;
if(t == 26) {
uu = nxt, vv = u, tt = c-'A';
}
else if(t == c-'A') uu=u,vv=nxt,tt=26;
else continue;
if(dist[uu][vv][tt] > cs+1){
dist[uu][vv][tt] = cs+1;
que.emplace(cs+1, mp(uu, mp(vv,tt)));
}
}
}
if(t == 26){
for(auto to:edge[u]){
int nxt = to.a;
char c = to.b;
if(!iscap(c)){
if(dist[nxt][v][t] > cs+1){
dist[nxt][v][t] = cs+1;
que.emplace(cs+1, mp(nxt,mp(v, t)));
}
}
else {
int uu, vv, tt;
{
uu = nxt,vv = v, tt = c-'A';
}
if(dist[uu][vv][tt] > cs+1){
dist[uu][vv][tt] = cs+1;
que.emplace(cs+1, mp(uu, mp(vv,tt)));
}
}
}
}
}
int ans=inf;
repn(i,n)repn(j,n)if(in[i] and in[j]){
chmin(ans,dist[i][j][26]);
}
if(ans > inf/2) ans = -1;
cout<<ans<<endl;
}
signed main(){
cin.tie(0);
ios::sync_with_stdio(0);
cout<<fixed<<setprecision(20);
slv();
}
*/
1 2 26 4
1 3 26 4
2 1 26 4
3 1 5 4
3 1 26 4
3 3 5 4
1 1 26 5
1 2 5 5
1 3 5 5
1 4 26 5
2 2 0 5
2 3 0 5
3 1 1 5
3 4 5 5
4 1 26 5
1 1 5 6
1 4 5 6
2 1 0 6
2 4 0 6
3 4 1 6
2 2 26 7
2 3 26 8
3 2 5 8
3 2 26 8
2 4 26 9
3 2 1 9
3 3 26 9
4 2 26 9
3 3 1 10
3 4 26 10
4 3 26 10
4 4 26 11
詳細信息
answer.code:284:1: error: expected unqualified-id before numeric constant 284 | 1 2 26 4 | ^