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;
}