好吧,终于知道原来string有这么多用法,map可以通过vector来映射多个数

 #include <iostream>
#include <string>
#include <set>
#include <map>
#include <vector>
using namespace std; void parse_address(string const s, string& user, string& mta) {
int t = s.find('@');
user = s.substr(, t);
mta = s.substr(t + );
} int main() {
int k;
string s, t, user1, user2, mta1, mta2;
set<string> addr; while(cin >> s&& s[] != '*') {
cin >> t >> k;
while(k--) {cin >> s; addr.insert(s + '@' + t);}
} while(cin >> s&& s[] != '*') {
parse_address(s, user1, mta1); vector<string> mta;
map<string, vector<string> > dest;
set<string> vis; while(cin >> t&& t[] != '*') {
if(vis.count(t)) continue;
vis.insert(t);
parse_address(t, user2, mta2);
if(!dest.count(mta2)) {mta.push_back(mta2); dest[mta2] = vector<string>();}
dest[mta2].push_back(t);
}
getline(cin, t); string data;
while(getline(cin, t)&& t[] != '*') data += " " + t + "\n"; for(int i = ; i < mta.size(); i++) {
mta2 = mta[i];
vector<string> users = dest[mta2];
cout << "Connection between " << mta1 << " and " << mta2 << "\n";
cout << " HELO "<< mta1 << "\n";
cout << " 250\n";
cout << " MAIL FROM:<" << user1 << "@" << mta1 << ">\n";
cout << " 250\n";
bool ok = false;
for(int i = ; i < users.size(); i++) {
cout << " RCPT TO:<" << users[i] << ">\n";
if(addr.count(users[i])) {ok = true; cout << " 250\n"; }
else cout << " 550\n";
}
if(ok) {
cout << " DATA\n 354\n";
cout << data;
cout << " .\n" << " 250\n";
}
cout << " QUIT\n 221\n";
}
} return ;
}

UVa 814邮件传输代理的交互的更多相关文章

  1. 算法习题---5.11邮件传输代理的交互(Uva814)

    一:题目 当某人从user1@mta1发送给另一个人user1@mta2时,这两个MTA将会通信. 如果两个收件人属于同一个MTA,发送者的MTA只需与这个MTA通信一次就可以把邮件发送给这两个人. ...

  2. Linux下6种优秀的邮件传输代理

    导读 在互联网上,邮件客户端向邮件服务器发送邮件然后将消息路由到正确的目的地(其他客户),其中邮件服务器使用的一个网络应用程序称为邮件传输代理(MTA). 最好的Linux邮件传输代理(MTAs) 邮 ...

  3. Linux中最受欢迎的邮件传输代理(MTA)

    MTA(Mail transfer Agent) -对于服务器管理员来说,邮件传输代理是最为重要的工具.MTA的主要工作就是将电子邮件从一台主机发送到另一台主机.MTA使用SMTP(简单邮件传输协议) ...

  4. SMTP 简单邮件传输协议

    SMTP 锁定 本词条由“科普中国”百科科学词条编写与应用工作项目 审核 . SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传 ...

  5. 【RL-TCPnet网络教程】第33章 SMTP简单邮件传输协议基础知识

    第33章      SMTP简单邮件传输协议基础知识 本章节为大家讲解SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)的基础知识,方便后面章节的实战操作. (本 ...

  6. UVA 814 The Letter Carrier's Rounds

    大致翻译: 对于电子邮件应用程序,您需要描述发生在成对mta之间的基于smtp的通信.发送方 的用户代理向发送消息传输代理(MTA)提供格式化的消息.发送MTA使用SimpleMail 传输协议(SM ...

  7. JavaMail学习之一-邮件传输协议

    协议:规定好的格式就是协议.就像http协议有请求协议和响应协议,邮件传输也分为发.收邮件的协议. 邮件协议分3种: 发邮件的:SMTP (Simple Mail Transport  Protoca ...

  8. 理解邮件传输协议(SMTP、POP3、IMAP、MIME)

    http://blog.csdn.net/xyang81/article/details/7672745 电子邮件需要在邮件客户端和邮件服务器之间,以及两个邮件服务器之间进行传递,就必须遵循一定的规则 ...

  9. SMTP邮件传输协议发送邮件和附件

    在以前接触的项目中,一直都是在做网站时用到了发送mail 的功能,在asp 和.net 中都有相关的发送mail 的类, 实现起来非常简单.最近这段时间因工作需要在C++ 中使用发送mail 的功能, ...

随机推荐

  1. 2、IValueConverter应用

    1.C#代码如下: public class logotoimgConverter:IValueConverter { //将logo转换为URI public object Convert(obje ...

  2. 学习linux与wp8.1——启航

    现在不知不觉已经大三了,而本专业的东西没有多大感兴趣的,我看好wp开发和linux开发. 为什么要学习wp开发?其实就是一种兴趣,我手中有部620而已,学着学着就感兴趣了,所以打算继续学下去.同时,我 ...

  3. 如何在Linux上通过grub添加内核参数

    转自Linux中国 我们可以在linux内核启动时为其提供各种各样的参数.这些参数可以自定义内核默认的行为,或者通知内核关于硬件的配置信息.内核参数应在内核启动时通过引导装载程序,如GRUB或LILO ...

  4. POJ 1700 F(Contest #3)

    Description A group of N people wishes to go across a river with only one boat, which can at most ca ...

  5. Oracle Database 11g express edition

    commands : show sys connect sys as sysdba or connect system as sysdba logout or disc clear screen or ...

  6. 【转】Linux下nginx配置https协议访问的方法

    一.配置nginx支持https协议访问,需要在编译安装nginx的时候添加相应的模块--with-http_ssl_module 查看nginx编译参数:/usr/local/nginx/sbin/ ...

  7. hive内部表、外部表

    hive内部表.外部表区别自不用说,可实际用的时候还是要小心. Hive的数据分为表数据和元数据,表数据是Hive中表格(table)具有的数据:而元数据是用来存储表的名字,表的列和分区及其属性,表的 ...

  8. poj2769 暴力

    //Accepted 208 KB 157 ms //纯暴力 //vis数组初始化时要用多少设置多少,不然TLE #include <cstdio> #include <cstrin ...

  9. python 中的json解析库

    当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...

  10. 0816 1459 json & pickle ,目录导入,目录规范

    ---恢复内容开始--- 1.json & pickle 磁盘上只能存储字符串或二进制数据,直接存字典.列表.元组等是存不了的,所以需要把各种数据转换成字符串格式,然后再存到硬盘. 直接将一个 ...