ABC C 求调
  • 板块题目总版
  • 楼主FormulaOne
  • 当前回复6
  • 已保存回复6
  • 发布时间2024/2/24 21:42
  • 上次更新2024/2/25 10:08:29
查看原帖
ABC C 求调
180406
FormulaOne楼主2024/2/24 21:42

rt,交了十几发死活看不出哪里错了,反而后面的题都会做

#include <iostream>
#include <cstdio>
#include <map>

using namespace std;

map<int,map<int,int> > mp;
char c[1000001],lst;
string s;
int n;

char cz( char x )
{
	if( mp[lst][c[lst]] < mp[x][c[x]] )
	{
		lst = x;
		return c[x] = cz( c[x] );
	}
	else return x;
}

int main()
{
	char u[1000001],v[1000001];
	for( int i = 'a' ; i <= 'z' ; i ++ )
		c[i] = i;
	cin >> n;
	cin >> s;
	n = s.size();
	int m;
	cin >> m;
	for( int i = 'a' ; i <= 'z' ; i ++ )
		for( int j = 'a' ; j <= 'z' ; j ++ )
			mp[i][j] = 0x3f3f3f3f;
	for( int i = 1 ; i <= m ; i ++ )
		cin >> u[i] >> v[i],mp[u[i]][v[i]] = i;
	for( int i = m ; i >= 1 ; i -- )
	{
		lst = v[i],v[i] = c[v[i]];
		v[i] = cz( v[i] );
		c[u[i]] = v[i];
	}
	for( int i = 0 ; i < n ; i ++ )
		cout << c[s[i]];
	return 0;
	
}
2024/2/24 21:42
加载中...