请问各位大佬,我这为什么一直WA?
所有的情况我都试了 没问题啊
#include
#include
#include
int main()
{
int i,j,n;
int page;
while(scanf("%d",&n)&&n)
{
page = (n+3)/4;
printf("Printing order for %d pages:\n",n);
for(i=page*4,j=1;i>j+2;i=i-2,j=j+2)
{
if(!(i>n&&j>n))
{
printf("Sheet %d, front:",(j+1)/2);
(i>n)?printf(" Blank,"):printf(" %d,",i);
(j>n)?printf(" Blank"):printf(" %d",j);
printf("\n");
}
if(!(j+1>n&&i-1>n))
{
printf("Sheet %d, back:",(j+1)/2);
(j+1>n)?printf(" Blank,"):printf(" %d,",j+1);
(i-1>n)?printf(" Blank"):printf(" %d",i-1);
printf("\n");
}
}
}
return 0;
}
#include <iostream>
#include <queue>
#include <vector>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
const int N = 100000 + 100;
const int E = 200000 + 100;
const ll INF = ((ll)1) << 61;
struct edge_t
{
int v;
int next;
int c, d;
}edge[E];
int head[N], tot = 0;
void add_edge(int u, int v, int d, int c)
{
edge[tot].d = d; edge[tot].c = c;
edge[tot].v = v; edge[tot].next = head[u]; head[u] = tot++;
}
struct node
{
int u;
ll c,d;
node (){}
node(int uu, int cc, int dd)
{
u=uu;
c=cc;
d=dd;
}
friend bool operator < (const node &a, const node &b)
{
if(a.d==b.d)return a.c>b.c;
return a.d>b.d;
}
};
bool vis[N];
node dis[N];
priority_queue<node>q;
void dijkstra()
{
dis[0].c = 0;
dis[0].d = 0;
q.push(dis[0]);
while (!q.empty())
{
int u = q.top().u; q.pop();
if(vis[u])continue;
vis[u] = 1;
for (int i = head[u]; ~i; i = edge[i].next)if (!vis[edge[i].v])
{
int v = edge[i].v;
if (dis[u].d + edge[i].d < dis[v].d)
{
dis[v].d = dis[u].d + edge[i].d;
dis[v].c = edge[i].c;
q.push(dis[v]);
}
else if (dis[u].d + edge[i].d == dis[v].d&& edge[i].c < dis[v].c)
{
dis[v].d = dis[u].d + edge[i].d;
dis[v].c = edge[i].c;
q.push(dis[v]);
}
}
}
}
void init(int n)
{
for (int i = 0; i < n; ++i)
{
dis[i].u = i;
dis[i].c = INF;
dis[i].d = INF;
}
memset(vis, 0, sizeof vis);
tot = 0;
memset(head, -1, sizeof head);
memset(edge, 0, sizeof edge);
}
int main()
{
int T;
scanf("%d", &T);
while (T--)
{
int n, m;
scanf("%d%d", &n, &m);
init(n);
for (int i = 0; i < m; ++i)
{
int u, v, d, c;
scanf("%d%d%d%d", &u, &v, &d, &c);
add_edge(u, v, d, c);
add_edge(v, u, d, c);
}
dijkstra();
ll sum_c = 0, sum_d = 0;
for(int i=0 ; i<n ; ++i)
{
sum_c+=dis[i].c;
sum_d+=dis[i].d;
}
printf("%lld %lld\n", sum_d, sum_c);
}
return 0;
}
back与 :之间还有一个空格
#include<stdio.h>
int main()
{
int i, j, n;
int page;
while (scanf("%d", &n) && n)
{
page = (n + 3) / 4;
printf("Printing order for %d pages:\n", n);
for (i = page * 4, j = 1; i>j + 2; i = i - 2, j = j + 2)
{
if (!(i>n&&j>n))
{
printf("Sheet %d, front:", (j + 1) / 2);
(i>n) ? printf(" Blank,") : printf(" %d,", i);
(j>n) ? printf(" Blank") : printf(" %d", j);
printf("\n");
}
if (!(j + 1>n&&i - 1>n))
{
printf("Sheet %d, back :", (j + 1) / 2); //back与 :之间还有一个空格
(j + 1>n) ? printf(" Blank,") : printf(" %d,", j + 1);
(i - 1>n) ? printf(" Blank") : printf(" %d", i - 1);
printf("\n");
}
}
}
return 0;
}
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=178